aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTravisBot <>2018-01-06 11:36:50 +0000
committerTravisBot <>2018-01-06 11:36:50 +0000
commit460d9bda5f03c5da29864fa9dd160848097be51b (patch)
treeb51cba7127a1402e0c9566ec919527a42934ab23
parenta72d604ca0e0f14228b45eaf9091b6c0b4085911 (diff)
downloadYAGE-460d9bda5f03c5da29864fa9dd160848097be51b.tar.gz
YAGE-460d9bda5f03c5da29864fa9dd160848097be51b.zip
[Travis] Rebuilding documentation
-rw-r--r--README_8md.html2
-rw-r--r--active_8cpp.html5
-rw-r--r--active_8h.html5
-rw-r--r--active_8h_source.html19
-rw-r--r--annotated.html79
-rw-r--r--annotated.js2
-rw-r--r--batch_8h.html141
-rw-r--r--batch_8h_source.html146
-rw-r--r--body_8cpp.html5
-rw-r--r--body_8h.html5
-rw-r--r--body_8h_source.html2
-rw-r--r--bug.html2
-rw-r--r--camera_8cpp.html8
-rw-r--r--camera_8h.html5
-rw-r--r--camera_8h_source.html45
-rw-r--r--classLogLevel.js4
-rw-r--r--classes.html56
-rw-r--r--classyage_1_1Active-members.html15
-rw-r--r--classyage_1_1Active.html127
-rw-r--r--classyage_1_1Active.js7
-rw-r--r--classyage_1_1Batch-members.html (renamed from classLogLevel.html)46
-rw-r--r--classyage_1_1Batch.html (renamed from structyage_1_1LogSink_1_1Model.html)132
-rw-r--r--classyage_1_1Batch.js7
-rw-r--r--classyage_1_1Body-members.html2
-rw-r--r--classyage_1_1Body.html2
-rw-r--r--classyage_1_1Camera-members.html12
-rw-r--r--classyage_1_1Camera.html159
-rw-r--r--classyage_1_1Camera.js8
-rw-r--r--classyage_1_1Collider-members.html2
-rw-r--r--classyage_1_1Collider.html2
-rw-r--r--classyage_1_1CollisionBody-members.html2
-rw-r--r--classyage_1_1CollisionBody.html2
-rw-r--r--classyage_1_1Drawable-members.html (renamed from classLogLevel-members.html)10
-rw-r--r--classyage_1_1Drawable.html174
-rw-r--r--classyage_1_1Drawable.js4
-rw-r--r--classyage_1_1Drawable.pngbin0 -> 772 bytes
-rw-r--r--classyage_1_1GlslProgram-members.html148
-rw-r--r--classyage_1_1GlslProgram.html644
-rw-r--r--classyage_1_1GlslProgram.js24
-rw-r--r--classyage_1_1Glyph.html482
-rw-r--r--classyage_1_1Glyph.js16
-rw-r--r--classyage_1_1ImageLoader-members.html2
-rw-r--r--classyage_1_1ImageLoader.html2
-rw-r--r--classyage_1_1IoManager-members.html2
-rw-r--r--classyage_1_1IoManager.html2
-rw-r--r--classyage_1_1LogMessage-members.html13
-rw-r--r--classyage_1_1LogMessage.html145
-rw-r--r--classyage_1_1LogMessage.js7
-rw-r--r--classyage_1_1LogSink-members.html5
-rw-r--r--classyage_1_1LogSink.html36
-rw-r--r--classyage_1_1LogSink.js5
-rw-r--r--classyage_1_1Logger-members.html20
-rw-r--r--classyage_1_1Logger.html157
-rw-r--r--classyage_1_1Logger.js8
-rw-r--r--classyage_1_1Matrix-members.html2
-rw-r--r--classyage_1_1Matrix.html21
-rw-r--r--classyage_1_1ParticleBody-members.html2
-rw-r--r--classyage_1_1ParticleBody.html2
-rw-r--r--classyage_1_1Rectangle-members.html (renamed from structyage_1_1LogSink_1_1Concept-members.html)14
-rw-r--r--classyage_1_1Rectangle.html (renamed from classyage_1_1Glyph-members.html)98
-rw-r--r--classyage_1_1Rectangle.js5
-rw-r--r--classyage_1_1Rectangle.pngbin0 -> 764 bytes
-rw-r--r--classyage_1_1RectangleCollider-members.html2
-rw-r--r--classyage_1_1RectangleCollider.html2
-rw-r--r--classyage_1_1RenderBatch.js11
-rw-r--r--classyage_1_1ResourceManager-members.html5
-rw-r--r--classyage_1_1ResourceManager.html51
-rw-r--r--classyage_1_1ResourceManager.js3
-rw-r--r--classyage_1_1RigidBody-members.html2
-rw-r--r--classyage_1_1RigidBody.html2
-rw-r--r--classyage_1_1Shader-members.html (renamed from classyage_1_1RenderBatch-members.html)26
-rw-r--r--classyage_1_1Shader.html397
-rw-r--r--classyage_1_1Shader.js13
-rw-r--r--classyage_1_1Shape-members.html129
-rw-r--r--classyage_1_1Shape.html178
-rw-r--r--classyage_1_1Shape.js4
-rw-r--r--classyage_1_1Shape.pngbin0 -> 767 bytes
-rw-r--r--classyage_1_1Sprite-members.html20
-rw-r--r--classyage_1_1Sprite.html143
-rw-r--r--classyage_1_1Sprite.js8
-rw-r--r--classyage_1_1SpriteBatch-members.html12
-rw-r--r--classyage_1_1SpriteBatch.html209
-rw-r--r--classyage_1_1SpriteBatch.js12
-rw-r--r--classyage_1_1SpriteSheet-members.html5
-rw-r--r--classyage_1_1SpriteSheet.html97
-rw-r--r--classyage_1_1SpriteSheet.js5
-rw-r--r--classyage_1_1SyncQueue-members.html9
-rw-r--r--classyage_1_1SyncQueue.html79
-rw-r--r--classyage_1_1SyncQueue.js5
-rw-r--r--classyage_1_1TextureCache-members.html7
-rw-r--r--classyage_1_1TextureCache.html54
-rw-r--r--classyage_1_1TextureCache.js5
-rw-r--r--classyage_1_1Vector-members.html2
-rw-r--r--classyage_1_1Vector.html4
-rw-r--r--classyage_1_1Vector2-members.html2
-rw-r--r--classyage_1_1Vector2.html3
-rw-r--r--classyage_1_1Vector3-members.html2
-rw-r--r--classyage_1_1Vector3.html3
-rw-r--r--classyage_1_1Vector4-members.html2
-rw-r--r--classyage_1_1Vector4.html11
-rw-r--r--classyage_1_1Window-members.html22
-rw-r--r--classyage_1_1Window.html58
-rw-r--r--classyage_1_1Window.js4
-rw-r--r--classyage_1_1details_1_1Row-members.html8
-rw-r--r--classyage_1_1details_1_1Row.html55
-rw-r--r--classyage_1_1details_1_1Row.js4
-rw-r--r--collider_8h.html5
-rw-r--r--collider_8h_source.html2
-rw-r--r--collisionbody_8h.html5
-rw-r--r--collisionbody_8h_source.html2
-rw-r--r--deprecated.html2
-rw-r--r--dir_059f34b87ae2c2af887b23a7e5e8e88f.html157
-rw-r--r--dir_059f34b87ae2c2af887b23a7e5e8e88f.js31
-rw-r--r--dir_0a5be4b85c8e2c05f7a9f5a803f53125.html6
-rw-r--r--dir_0a5be4b85c8e2c05f7a9f5a803f53125.js2
-rw-r--r--dir_11841e5da2063fc5766a682aee38e289.html46
-rw-r--r--dir_11841e5da2063fc5766a682aee38e289.js34
-rw-r--r--dir_48a91ae829881cbedcfc124d2027890d.html2
-rw-r--r--dir_a58d7658bbcfd3d3d7296185ebe55c28.html2
-rw-r--r--dir_aa7f86daaaa64c448f636c0e65de2cec.html2
-rw-r--r--dir_d09e80fdcf0bb585bbe3b7099c52d028.html133
-rw-r--r--dir_d09e80fdcf0bb585bbe3b7099c52d028.js13
-rw-r--r--drawable_8h.html141
-rw-r--r--drawable_8h_source.html144
-rw-r--r--ellipse_8h.html125
-rw-r--r--ellipse_8h_source.html129
-rw-r--r--files.html111
-rw-r--r--functions.html15
-rw-r--r--functions_b.html24
-rw-r--r--functions_c.html32
-rw-r--r--functions_d.html19
-rw-r--r--functions_dup.js2
-rw-r--r--functions_e.html10
-rw-r--r--functions_f.html10
-rw-r--r--functions_func.html167
-rw-r--r--functions_g.html22
-rw-r--r--functions_h.html7
-rw-r--r--functions_i.html16
-rw-r--r--functions_k.html (renamed from functions_q.html)13
-rw-r--r--functions_l.html21
-rw-r--r--functions_m.html13
-rw-r--r--functions_n.html11
-rw-r--r--functions_o.html27
-rw-r--r--functions_p.html18
-rw-r--r--functions_r.html26
-rw-r--r--functions_rela.html2
-rw-r--r--functions_s.html28
-rw-r--r--functions_t.html41
-rw-r--r--functions_type.html2
-rw-r--r--functions_u.html16
-rw-r--r--functions_v.html20
-rw-r--r--functions_vars.html177
-rw-r--r--functions_w.html19
-rw-r--r--functions_x.html10
-rw-r--r--functions_y.html10
-rw-r--r--functions_z.html7
-rw-r--r--functions_~.html13
-rw-r--r--globals.html186
-rw-r--r--globals_defs.html36
-rw-r--r--globals_eval.html145
-rw-r--r--globals_func.html242
-rw-r--r--globals_type.html136
-rw-r--r--globals_vars.html5
-rw-r--r--glslprogram_8h_source.html190
-rw-r--r--hierarchy.html97
-rw-r--r--hierarchy.js17
-rw-r--r--imageloader_8cpp.html11
-rw-r--r--imageloader_8h.html5
-rw-r--r--imageloader_8h_source.html2
-rw-r--r--index.html4
-rw-r--r--input_8h.html30
-rw-r--r--input_8h.js1
-rw-r--r--input_8h_source.html287
-rw-r--r--iomanager_8cpp.html5
-rw-r--r--iomanager_8h.html5
-rw-r--r--iomanager_8h_source.html2
-rw-r--r--logger_8cpp.html5
-rw-r--r--logger_8dox.html123
-rw-r--r--logger_8h.html89
-rw-r--r--logger_8h.js7
-rw-r--r--logger_8h_source.html105
-rw-r--r--loglevel_8h.html28
-rw-r--r--loglevel_8h.js10
-rw-r--r--loglevel_8h_source.html30
-rw-r--r--logmessage_8cpp.html5
-rw-r--r--logmessage_8h.html6
-rw-r--r--logmessage_8h_source.html117
-rw-r--r--logsink_8cpp.html5
-rw-r--r--logsink_8h.html9
-rw-r--r--logsink_8h.js2
-rw-r--r--logsink_8h_source.html46
-rw-r--r--matrix_8dox.html2
-rw-r--r--matrix_8h.html5
-rw-r--r--matrix_8h_source.html14
-rw-r--r--md_yage_physics_README.html2
-rw-r--r--namespacemembers.html24
-rw-r--r--namespacemembers_enum.html5
-rw-r--r--namespacemembers_eval.html17
-rw-r--r--namespacemembers_func.html12
-rw-r--r--namespacemembers_type.html2
-rw-r--r--namespaces.html2
-rw-r--r--namespaceyage.html197
-rw-r--r--namespaceyage.js16
-rw-r--r--namespaceyage_1_1details.html7
-rw-r--r--namespaceyage_1_1details.js4
-rw-r--r--namespaceyage_1_1matrix.html13
-rw-r--r--navtree.js7
-rw-r--r--navtreeindex0.js482
-rw-r--r--navtreeindex1.js462
-rw-r--r--navtreeindex2.js264
-rw-r--r--pages.html2
-rw-r--r--particlebody_8cpp.html5
-rw-r--r--particlebody_8h.html5
-rw-r--r--particlebody_8h_source.html2
-rw-r--r--physics_8h.html5
-rw-r--r--physics_8h_source.html2
-rw-r--r--picopng_8cpp.js4
-rw-r--r--picopng_8h.js4
-rw-r--r--rectangle_8cpp.html136
-rw-r--r--rectangle_8h.html (renamed from picopng_8cpp.html)32
-rw-r--r--rectangle_8h_source.html151
-rw-r--r--rectanglecollider_8cpp.html5
-rw-r--r--rectanglecollider_8h.html5
-rw-r--r--rectanglecollider_8h_source.html2
-rw-r--r--resourcemanager_8cpp.html7
-rw-r--r--resourcemanager_8h.html5
-rw-r--r--resourcemanager_8h_source.html22
-rw-r--r--rigidbody_8cpp.html5
-rw-r--r--rigidbody_8h.html5
-rw-r--r--rigidbody_8h_source.html2
-rw-r--r--search/all_0.js7
-rw-r--r--search/all_1.js13
-rw-r--r--search/all_10.js1
-rw-r--r--search/all_11.js20
-rw-r--r--search/all_12.js66
-rw-r--r--search/all_13.js12
-rw-r--r--search/all_14.js6
-rw-r--r--search/all_15.js8
-rw-r--r--search/all_16.js6
-rw-r--r--search/all_17.js3
-rw-r--r--search/all_18.js9
-rw-r--r--search/all_19.js3
-rw-r--r--search/all_1a.js3
-rw-r--r--search/all_2.js16
-rw-r--r--search/all_3.js10
-rw-r--r--search/all_4.js5
-rw-r--r--search/all_5.js3
-rw-r--r--search/all_6.js15
-rw-r--r--search/all_7.js1
-rw-r--r--search/all_8.js6
-rw-r--r--search/all_a.js2
-rw-r--r--search/all_b.js11
-rw-r--r--search/all_c.js8
-rw-r--r--search/all_d.js3
-rw-r--r--search/all_e.js11
-rw-r--r--search/all_f.js9
-rw-r--r--search/classes_1.js1
-rw-r--r--search/classes_2.js1
-rw-r--r--search/classes_3.js3
-rw-r--r--search/classes_4.js3
-rw-r--r--search/classes_5.js6
-rw-r--r--search/classes_6.js8
-rw-r--r--search/classes_7.js6
-rw-r--r--search/classes_8.js7
-rw-r--r--search/classes_9.js11
-rw-r--r--search/classes_a.js10
-rw-r--r--search/classes_b.js3
-rw-r--r--search/classes_c.js11
-rw-r--r--search/classes_d.js11
-rw-r--r--search/classes_e.html (renamed from search/functions_19.html)2
-rw-r--r--search/classes_e.js4
-rw-r--r--search/defines_0.js2
-rw-r--r--search/defines_1.html26
-rw-r--r--search/defines_1.js6
-rw-r--r--search/defines_2.html26
-rw-r--r--search/defines_2.js9
-rw-r--r--search/enums_1.js2
-rw-r--r--search/enums_2.html26
-rw-r--r--search/enums_2.js4
-rw-r--r--search/enumvalues_12.js7
-rw-r--r--search/enumvalues_16.js1
-rw-r--r--search/enumvalues_3.js1
-rw-r--r--search/enumvalues_4.js1
-rw-r--r--search/enumvalues_5.js1
-rw-r--r--search/enumvalues_8.js1
-rw-r--r--search/files_1.js1
-rw-r--r--search/files_3.js3
-rw-r--r--search/files_4.js6
-rw-r--r--search/files_5.js12
-rw-r--r--search/files_6.js10
-rw-r--r--search/files_7.js7
-rw-r--r--search/files_8.js11
-rw-r--r--search/files_9.js17
-rw-r--r--search/files_a.js16
-rw-r--r--search/files_b.js5
-rw-r--r--search/files_c.js3
-rw-r--r--search/files_d.js4
-rw-r--r--search/files_e.html26
-rw-r--r--search/files_e.js5
-rw-r--r--search/functions_0.js3
-rw-r--r--search/functions_1.js6
-rw-r--r--search/functions_10.js58
-rw-r--r--search/functions_11.js16
-rw-r--r--search/functions_12.js9
-rw-r--r--search/functions_13.js9
-rw-r--r--search/functions_14.js8
-rw-r--r--search/functions_15.js5
-rw-r--r--search/functions_16.js4
-rw-r--r--search/functions_17.js4
-rw-r--r--search/functions_18.js8
-rw-r--r--search/functions_19.js11
-rw-r--r--search/functions_2.js9
-rw-r--r--search/functions_3.js5
-rw-r--r--search/functions_4.js2
-rw-r--r--search/functions_6.js6
-rw-r--r--search/functions_8.js3
-rw-r--r--search/functions_9.js2
-rw-r--r--search/functions_a.js6
-rw-r--r--search/functions_b.js1
-rw-r--r--search/functions_c.js12
-rw-r--r--search/functions_d.js17
-rw-r--r--search/functions_e.js7
-rw-r--r--search/functions_f.js10
-rw-r--r--search/search.js12
-rw-r--r--search/typedefs_1.js4
-rw-r--r--search/variables_0.js4
-rw-r--r--search/variables_1.js5
-rw-r--r--search/variables_10.js9
-rw-r--r--search/variables_11.js1
-rw-r--r--search/variables_12.js6
-rw-r--r--search/variables_13.js5
-rw-r--r--search/variables_14.js3
-rw-r--r--search/variables_15.js3
-rw-r--r--search/variables_2.js4
-rw-r--r--search/variables_3.js2
-rw-r--r--search/variables_4.js6
-rw-r--r--search/variables_5.js8
-rw-r--r--search/variables_6.js5
-rw-r--r--search/variables_7.js4
-rw-r--r--search/variables_8.js2
-rw-r--r--search/variables_9.js5
-rw-r--r--search/variables_a.js3
-rw-r--r--search/variables_b.js4
-rw-r--r--search/variables_c.js5
-rw-r--r--search/variables_d.js3
-rw-r--r--search/variables_e.js3
-rw-r--r--search/variables_f.js4
-rw-r--r--shader_8cpp.html (renamed from glslprogram_8cpp.html)17
-rw-r--r--shader_8h.html (renamed from glslprogram_8h.html)20
-rw-r--r--shader_8h_source.html168
-rw-r--r--shape_8h.html (renamed from picopng_8h.html)38
-rw-r--r--shape_8h_source.html (renamed from picopng_8h_source.html)43
-rw-r--r--sprite_8cpp.html15
-rw-r--r--sprite_8h.html11
-rw-r--r--sprite_8h_source.html27
-rw-r--r--spritebatch_8cpp.html14
-rw-r--r--spritebatch_8h.html21
-rw-r--r--spritebatch_8h_source.html244
-rw-r--r--spritesheet_8cpp.html5
-rw-r--r--spritesheet_8h.html7
-rw-r--r--spritesheet_8h_source.html14
-rw-r--r--stb__image_8cpp.html145
-rw-r--r--stb__image_8cpp.js4
-rw-r--r--stb__image_8h.html1492
-rw-r--r--stb__image_8h.js48
-rw-r--r--stb__image_8h_source.html7347
-rw-r--r--structstbi__io__callbacks-members.html130
-rw-r--r--structstbi__io__callbacks.html180
-rw-r--r--structstbi__io__callbacks.js6
-rw-r--r--structyage_1_1Colour-members.html2
-rw-r--r--structyage_1_1Colour.html4
-rw-r--r--structyage_1_1LogMessage_1_1Meta-members.html5
-rw-r--r--structyage_1_1LogMessage_1_1Meta.html24
-rw-r--r--structyage_1_1LogMessage_1_1Meta.js3
-rw-r--r--structyage_1_1LogSink_1_1Concept.js6
-rw-r--r--structyage_1_1LogSink_1_1Concept.pngbin740 -> 0 bytes
-rw-r--r--structyage_1_1LogSink_1_1Model.js7
-rw-r--r--structyage_1_1LogSink_1_1Model.pngbin735 -> 0 bytes
-rw-r--r--structyage_1_1Position-members.html2
-rw-r--r--structyage_1_1Position.html4
-rw-r--r--structyage_1_1Texture-members.html6
-rw-r--r--structyage_1_1Texture.html52
-rw-r--r--structyage_1_1Texture.js6
-rw-r--r--structyage_1_1UV-members.html2
-rw-r--r--structyage_1_1UV.html4
-rw-r--r--structyage_1_1Vertex-members.html2
-rw-r--r--structyage_1_1Vertex.html4
-rw-r--r--structyage_1_1details_1_1Coordinate-members.html2
-rw-r--r--structyage_1_1details_1_1Coordinate.html2
-rw-r--r--structyage_1_1details_1_1Glyph-members.html134
-rw-r--r--structyage_1_1details_1_1Glyph.html (renamed from classyage_1_1RenderBatch.html)196
-rw-r--r--structyage_1_1details_1_1Glyph.js10
-rw-r--r--structyage_1_1details_1_1RenderBatch-members.html (renamed from structyage_1_1LogSink_1_1Model-members.html)17
-rw-r--r--structyage_1_1details_1_1RenderBatch.html (renamed from structyage_1_1LogSink_1_1Concept.html)123
-rw-r--r--structyage_1_1details_1_1RenderBatch.js7
-rw-r--r--syncqueue_8h.html5
-rw-r--r--syncqueue_8h_source.html11
-rw-r--r--texture_8h.html9
-rw-r--r--texture_8h_source.html38
-rw-r--r--texturecache_8cpp.html7
-rw-r--r--texturecache_8h.html7
-rw-r--r--texturecache_8h_source.html12
-rw-r--r--todo.html8
-rw-r--r--todolist_8dox.html2
-rw-r--r--vertex_8h.html9
-rw-r--r--vertex_8h_source.html6
-rw-r--r--window_8cpp.html16
-rw-r--r--window_8cpp.js4
-rw-r--r--window_8h.html9
-rw-r--r--window_8h_source.html123
-rw-r--r--yage_2physics_2README_8md.html2
-rw-r--r--yage_8cpp.html5
-rw-r--r--yage_8h.html24
-rw-r--r--yage_8h_source.html71
414 files changed, 16446 insertions, 6065 deletions
diff --git a/README_8md.html b/README_8md.html
index b2cf24cd..492b8488 100644
--- a/README_8md.html
+++ b/README_8md.html
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('README_8md.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="README_8md.html">README.md</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/active_8cpp.html b/active_8cpp.html
index ca64cee2..0cc27624 100644
--- a/active_8cpp.html
+++ b/active_8cpp.html
@@ -123,7 +123,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -131,7 +132,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li><li class="navelem"><a class="el" href="active_8cpp.html">active.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/active_8h.html b/active_8h.html
index 47532dc3..599ee51f 100644
--- a/active_8h.html
+++ b/active_8h.html
@@ -134,7 +134,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -142,7 +143,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li><li class="navelem"><a class="el" href="active_8h.html">active.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/active_8h_source.html b/active_8h_source.html
index 46f40df4..51277aeb 100644
--- a/active_8h_source.html
+++ b/active_8h_source.html
@@ -126,7 +126,7 @@ $(document).ready(function(){initNavTree('active_8h_source.html','');});
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc"> 24</a></span>&#160; <span class="keyword">typedef</span> std::function&lt;void()&gt; <a class="code" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a>;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">Active</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Active.html">Active</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classyage_1_1Active.html">Active</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Active.html">Active</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="classyage_1_1Active.html">Active</a> &amp;<a class="code" href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Active.html">Active</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2">~Active</a>();</div>
@@ -136,29 +136,24 @@ $(document).ready(function(){initNavTree('active_8h_source.html','');});
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326">send</a>(<a class="code" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a> message);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">Active</a>();</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">run</a>();</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classyage_1_1Active.html">Active</a>();</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> run();</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db"> 39</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">running_</a>;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3"> 40</a></span>&#160; <a class="code" href="classyage_1_1SyncQueue.html">SyncQueue&lt;Callback&gt;</a> <a class="code" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">queue_</a>;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50"> 41</a></span>&#160; std::thread <a class="code" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">thread_</a>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">bool</span> running_;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classyage_1_1SyncQueue.html">SyncQueue&lt;Callback&gt;</a> queue_;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::thread thread_;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;};</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;} <span class="comment">// namespace yage</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1Active_html_aa9b25afe60999caaa6f261d1e79a351b"><div class="ttname"><a href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">yage::Active::run</a></div><div class="ttdeci">void run()</div><div class="ttdef"><b>Definition:</b> active.cpp:36</div></div>
<div class="ttc" id="classyage_1_1Active_html_a665673b94eb5ce7c448839e5bb6e0326"><div class="ttname"><a href="classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326">yage::Active::send</a></div><div class="ttdeci">void send(Callback message)</div><div class="ttdef"><b>Definition:</b> active.cpp:31</div></div>
<div class="ttc" id="classyage_1_1Active_html"><div class="ttname"><a href="classyage_1_1Active.html">yage::Active</a></div><div class="ttdef"><b>Definition:</b> active.h:21</div></div>
<div class="ttc" id="classyage_1_1Active_html_a4b82fec6f02c00d186b1b840ce8f11dc"><div class="ttname"><a href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">yage::Active::Callback</a></div><div class="ttdeci">std::function&lt; void()&gt; Callback</div><div class="ttdef"><b>Definition:</b> active.h:24</div></div>
<div class="ttc" id="classyage_1_1Active_html_add837044e73e4bc9849f09495535600c"><div class="ttname"><a href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">yage::Active::operator=</a></div><div class="ttdeci">Active &amp; operator=(const Active &amp;)=delete</div></div>
-<div class="ttc" id="classyage_1_1Active_html_ad7b4b4cea1880d115dc5e3e1f80f404b"><div class="ttname"><a href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">yage::Active::Active</a></div><div class="ttdeci">Active()</div><div class="ttdef"><b>Definition:</b> active.cpp:14</div></div>
<div class="ttc" id="classyage_1_1Active_html_ab69d08cf4804b59ac9db283015e749f2"><div class="ttname"><a href="classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2">yage::Active::~Active</a></div><div class="ttdeci">~Active()</div><div class="ttdef"><b>Definition:</b> active.cpp:16</div></div>
-<div class="ttc" id="classyage_1_1Active_html_ad673e2fd5b6c0c12de94ea7fcd750a50"><div class="ttname"><a href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">yage::Active::thread_</a></div><div class="ttdeci">std::thread thread_</div><div class="ttdef"><b>Definition:</b> active.h:41</div></div>
<div class="ttc" id="classyage_1_1Active_html_aa2ed414bbe94fdd51c8aeb7ada73a064"><div class="ttname"><a href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">yage::Active::create</a></div><div class="ttdeci">static std::unique_ptr&lt; Active &gt; create()</div><div class="ttdef"><b>Definition:</b> active.cpp:22</div></div>
-<div class="ttc" id="classyage_1_1Active_html_ac32d54302bf084f0f7422cce5ee617db"><div class="ttname"><a href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">yage::Active::running_</a></div><div class="ttdeci">bool running_</div><div class="ttdef"><b>Definition:</b> active.h:39</div></div>
<div class="ttc" id="syncqueue_8h_html"><div class="ttname"><a href="syncqueue_8h.html">syncqueue.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="classyage_1_1Active_html_a8c957af55704f6f30734054336f1a6d3"><div class="ttname"><a href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">yage::Active::queue_</a></div><div class="ttdeci">SyncQueue&lt; Callback &gt; queue_</div><div class="ttdef"><b>Definition:</b> active.h:40</div></div>
<div class="ttc" id="classyage_1_1SyncQueue_html"><div class="ttname"><a href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; Callback &gt;</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -166,7 +161,7 @@ $(document).ready(function(){initNavTree('active_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li><li class="navelem"><a class="el" href="active_8h.html">active.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/annotated.html b/annotated.html
index 6ad21fb9..9f6e5716 100644
--- a/annotated.html
+++ b/annotated.html
@@ -115,45 +115,48 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceyage.html" target="_self">yage</a></td><td class="desc">Project namespace </td></tr>
<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceyage_1_1details.html" target="_self">details</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1Coordinate.html" target="_self">Coordinate</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1details_1_1Row.html" target="_self">Row</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1details_1_1Row.html" target="_self">Row</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1RenderBatch.html" target="_self">RenderBatch</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1Glyph.html" target="_self">Glyph</a></td><td class="desc"><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceyage_1_1matrix.html" target="_self">matrix</a></td><td class="desc">Namespace containing functions that operate on matrices </td></tr>
<tr id="row_0_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Camera.html" target="_self">Camera</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1GlslProgram.html" target="_self">GlslProgram</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ImageLoader.html" target="_self">ImageLoader</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1IoManager.html" target="_self">IoManager</a></td><td class="desc"></td></tr>
-<tr id="row_0_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Logger.html" target="_self">Logger</a></td><td class="desc"></td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogMessage.html" target="_self">LogMessage</a></td><td class="desc"></td></tr>
-<tr id="row_0_7_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogMessage_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
-<tr id="row_0_8_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_8_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogSink.html" target="_self">LogSink</a></td><td class="desc"></td></tr>
-<tr id="row_0_8_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogSink_1_1Concept.html" target="_self">Concept</a></td><td class="desc"></td></tr>
-<tr id="row_0_8_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogSink_1_1Model.html" target="_self">Model</a></td><td class="desc"></td></tr>
-<tr id="row_0_9_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ResourceManager.html" target="_self">ResourceManager</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Sprite.html" target="_self">Sprite</a></td><td class="desc"></td></tr>
-<tr id="row_0_11_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Glyph.html" target="_self">Glyph</a></td><td class="desc"><a class="el" href="classyage_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture </td></tr>
-<tr id="row_0_12_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RenderBatch.html" target="_self">RenderBatch</a></td><td class="desc"></td></tr>
-<tr id="row_0_13_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteBatch.html" target="_self">SpriteBatch</a></td><td class="desc"></td></tr>
-<tr id="row_0_14_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteSheet.html" target="_self">SpriteSheet</a></td><td class="desc"></td></tr>
-<tr id="row_0_15_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Texture.html" target="_self">Texture</a></td><td class="desc"></td></tr>
-<tr id="row_0_16_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1TextureCache.html" target="_self">TextureCache</a></td><td class="desc"></td></tr>
-<tr id="row_0_17_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Position.html" target="_self">Position</a></td><td class="desc"></td></tr>
-<tr id="row_0_18_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Colour.html" target="_self">Colour</a></td><td class="desc"></td></tr>
-<tr id="row_0_19_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1UV.html" target="_self">UV</a></td><td class="desc"></td></tr>
-<tr id="row_0_20_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Vertex.html" target="_self">Vertex</a></td><td class="desc"></td></tr>
-<tr id="row_0_21_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Window.html" target="_self">Window</a></td><td class="desc"></td></tr>
-<tr id="row_0_22_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">Matrix</a></td><td class="desc">Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes </td></tr>
-<tr id="row_0_23_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">Vector</a></td><td class="desc"></td></tr>
-<tr id="row_0_24_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">Vector2</a></td><td class="desc">2D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_0_25_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector3.html" target="_self">Vector3</a></td><td class="desc">3D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_0_26_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector4.html" target="_self">Vector4</a></td><td class="desc">4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_0_27_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Body.html" target="_self">Body</a></td><td class="desc"></td></tr>
-<tr id="row_0_28_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Collider.html" target="_self">Collider</a></td><td class="desc"></td></tr>
-<tr id="row_0_29_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1CollisionBody.html" target="_self">CollisionBody</a></td><td class="desc"></td></tr>
-<tr id="row_0_30_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ParticleBody.html" target="_self">ParticleBody</a></td><td class="desc"></td></tr>
-<tr id="row_0_31_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RectangleCollider.html" target="_self">RectangleCollider</a></td><td class="desc"></td></tr>
-<tr id="row_0_32_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RigidBody.html" target="_self">RigidBody</a></td><td class="desc"></td></tr>
-<tr id="row_0_33_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Active.html" target="_self">Active</a></td><td class="desc"></td></tr>
-<tr id="row_0_34_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">SyncQueue</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classLogLevel.html" target="_self">LogLevel</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ImageLoader.html" target="_self">ImageLoader</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1IoManager.html" target="_self">IoManager</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Logger.html" target="_self">Logger</a></td><td class="desc"><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+</td></tr>
+<tr id="row_0_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_6_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogMessage.html" target="_self">LogMessage</a></td><td class="desc"></td></tr>
+<tr id="row_0_6_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogMessage_1_1Meta.html" target="_self">Meta</a></td><td class="desc"></td></tr>
+<tr id="row_0_7_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogSink.html" target="_self">LogSink</a></td><td class="desc"></td></tr>
+<tr id="row_0_8_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ResourceManager.html" target="_self">ResourceManager</a></td><td class="desc"></td></tr>
+<tr id="row_0_9_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteSheet.html" target="_self">SpriteSheet</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1TextureCache.html" target="_self">TextureCache</a></td><td class="desc"></td></tr>
+<tr id="row_0_11_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Window.html" target="_self">Window</a></td><td class="desc"></td></tr>
+<tr id="row_0_12_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Texture.html" target="_self">Texture</a></td><td class="desc"></td></tr>
+<tr id="row_0_13_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Position.html" target="_self">Position</a></td><td class="desc"></td></tr>
+<tr id="row_0_14_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Colour.html" target="_self">Colour</a></td><td class="desc"></td></tr>
+<tr id="row_0_15_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1UV.html" target="_self">UV</a></td><td class="desc"></td></tr>
+<tr id="row_0_16_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Vertex.html" target="_self">Vertex</a></td><td class="desc"></td></tr>
+<tr id="row_0_17_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">Matrix</a></td><td class="desc">Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes </td></tr>
+<tr id="row_0_18_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">Vector</a></td><td class="desc"></td></tr>
+<tr id="row_0_19_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">Vector2</a></td><td class="desc">2D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_0_20_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector3.html" target="_self">Vector3</a></td><td class="desc">3D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_0_21_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector4.html" target="_self">Vector4</a></td><td class="desc">4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_0_22_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Body.html" target="_self">Body</a></td><td class="desc"></td></tr>
+<tr id="row_0_23_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Collider.html" target="_self">Collider</a></td><td class="desc"></td></tr>
+<tr id="row_0_24_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1CollisionBody.html" target="_self">CollisionBody</a></td><td class="desc"></td></tr>
+<tr id="row_0_25_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ParticleBody.html" target="_self">ParticleBody</a></td><td class="desc"></td></tr>
+<tr id="row_0_26_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RectangleCollider.html" target="_self">RectangleCollider</a></td><td class="desc"></td></tr>
+<tr id="row_0_27_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RigidBody.html" target="_self">RigidBody</a></td><td class="desc"></td></tr>
+<tr id="row_0_28_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Batch.html" target="_self">Batch</a></td><td class="desc">Will be the base class for all the different batching processes that might use different shaders and attributes </td></tr>
+<tr id="row_0_29_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Drawable.html" target="_self">Drawable</a></td><td class="desc"></td></tr>
+<tr id="row_0_30_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Rectangle.html" target="_self">Rectangle</a></td><td class="desc"></td></tr>
+<tr id="row_0_31_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Shader.html" target="_self">Shader</a></td><td class="desc"></td></tr>
+<tr id="row_0_32_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Shape.html" target="_self">Shape</a></td><td class="desc"></td></tr>
+<tr id="row_0_33_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Sprite.html" target="_self">Sprite</a></td><td class="desc"></td></tr>
+<tr id="row_0_34_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteBatch.html" target="_self">SpriteBatch</a></td><td class="desc"></td></tr>
+<tr id="row_0_35_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Active.html" target="_self">Active</a></td><td class="desc"></td></tr>
+<tr id="row_0_36_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">SyncQueue</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structstbi__io__callbacks.html" target="_self">stbi_io_callbacks</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
@@ -161,7 +164,7 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/annotated.js b/annotated.js
index 2806ff6a..48ccda6f 100644
--- a/annotated.js
+++ b/annotated.js
@@ -1,5 +1,5 @@
var annotated =
[
[ "yage", "namespaceyage.html", "namespaceyage" ],
- [ "LogLevel", "classLogLevel.html", "classLogLevel" ]
+ [ "stbi_io_callbacks", "structstbi__io__callbacks.html", "structstbi__io__callbacks" ]
]; \ No newline at end of file
diff --git a/batch_8h.html b/batch_8h.html
new file mode 100644
index 00000000..5fdc4823
--- /dev/null
+++ b/batch_8h.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/batch.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('batch_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">batch.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="batch_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html">yage::Batch</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="classyage_1_1Batch.html" title="The Batch class will be the base class for all the different batching processes that might use differ...">Batch</a> class will be the base class for all the different batching processes that might use different shaders and attributes. <a href="classyage_1_1Batch.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
+<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="batch_8h.html">batch.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/batch_8h_source.html b/batch_8h_source.html
new file mode 100644
index 00000000..21b68062
--- /dev/null
+++ b/batch_8h_source.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/batch.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('batch_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">batch.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="batch_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_BATCH_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_BATCH_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;{</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classyage_1_1Batch.html"> 25</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Batch.html">Batch</a></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">init</a>();</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">begin</a>();</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">end</a>();</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">render</a>();</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;};</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1Batch_html_ab458f3129d2a329806dd00c6be77709d"><div class="ttname"><a href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">yage::Batch::begin</a></div><div class="ttdeci">virtual void begin()</div></div>
+<div class="ttc" id="classyage_1_1Batch_html"><div class="ttname"><a href="classyage_1_1Batch.html">yage::Batch</a></div><div class="ttdoc">The Batch class will be the base class for all the different batching processes that might use differ...</div><div class="ttdef"><b>Definition:</b> batch.h:25</div></div>
+<div class="ttc" id="classyage_1_1Batch_html_a0040228902f0a4cca90da23f36a7c477"><div class="ttname"><a href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">yage::Batch::init</a></div><div class="ttdeci">virtual bool init()</div></div>
+<div class="ttc" id="classyage_1_1Batch_html_a3439c8dd88d87be4460161d233044c65"><div class="ttname"><a href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">yage::Batch::render</a></div><div class="ttdeci">virtual void render()</div></div>
+<div class="ttc" id="classyage_1_1Batch_html_a322b0fe531c9cfa506d6d2dd786a236e"><div class="ttname"><a href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">yage::Batch::end</a></div><div class="ttdeci">virtual void end()</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="batch_8h.html">batch.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/body_8cpp.html b/body_8cpp.html
index d3065c71..cfbce6a4 100644
--- a/body_8cpp.html
+++ b/body_8cpp.html
@@ -124,7 +124,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -132,7 +133,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="body_8cpp.html">body.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/body_8h.html b/body_8h.html
index 683f240a..2dbfdfb5 100644
--- a/body_8h.html
+++ b/body_8h.html
@@ -131,7 +131,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -139,7 +140,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="body_8h.html">body.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/body_8h_source.html b/body_8h_source.html
index 041c6594..4edafae3 100644
--- a/body_8h_source.html
+++ b/body_8h_source.html
@@ -181,7 +181,7 @@ $(document).ready(function(){initNavTree('body_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="body_8h.html">body.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/bug.html b/bug.html
index ff8088b0..6b311702 100644
--- a/bug.html
+++ b/bug.html
@@ -111,7 +111,7 @@ $(document).ready(function(){initNavTree('bug.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/camera_8cpp.html b/camera_8cpp.html
index 98a97bc1..69e7e109 100644
--- a/camera_8cpp.html
+++ b/camera_8cpp.html
@@ -115,7 +115,8 @@ $(document).ready(function(){initNavTree('camera_8cpp.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="camera_8h_source.html">camera.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="glslprogram_8h_source.html">glslprogram.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="shader_8h_source.html">../render/shader.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="logger_8h_source.html">logger.h</a>&quot;</code><br/>
<code>#include &lt;glad/glad.h&gt;</code><br/>
<code>#include &lt;glm/gtc/matrix_transform.hpp&gt;</code><br/>
</div><table class="memberdecls">
@@ -126,7 +127,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -134,7 +136,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="camera_8cpp.html">camera.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/camera_8h.html b/camera_8h.html
index 8d58c04f..410e8361 100644
--- a/camera_8h.html
+++ b/camera_8h.html
@@ -131,7 +131,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -139,7 +140,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="camera_8h.html">camera.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/camera_8h_source.html b/camera_8h_source.html
index 20ca02a0..57a6c224 100644
--- a/camera_8h_source.html
+++ b/camera_8h_source.html
@@ -109,52 +109,49 @@ $(document).ready(function(){initNavTree('camera_8h_source.html','');});
</div><!--header-->
<div class="contents">
<a href="camera_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CAMERA2D_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CAMERA2D_H</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_CAMERA_H</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_CAMERA_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;glm/glm.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span>yage</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">class </span>GlslProgram;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">class </span>Shader;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Camera.html">Camera</a></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c"> 22</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">update_matrix_</a> = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f"> 23</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">scale_</a> = 1;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2"> 24</a></span>&#160; glm::vec2 <a class="code" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">position_</a>;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3"> 25</a></span>&#160; glm::mat4 <a class="code" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">camera_matrix_</a>;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26"> 26</a></span>&#160; glm::mat4 <a class="code" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">ortho_matrix_</a>;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordtype">bool</span> update_matrix_ = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">float</span> scale_ = 1;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; glm::vec2 position_;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; glm::mat4 camera_matrix_;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; glm::mat4 ortho_matrix_;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">Camera</a>(<span class="keywordtype">int</span> screen_width = 1280, <span class="keywordtype">int</span> screen_height = 720);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">update</a>(<a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;program);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">update</a>(<a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;program);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">move</a>(<span class="keyword">const</span> glm::vec2 &amp;direction);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;};</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1Camera_html_a665b599105c6930711d31ada6e12dc8f"><div class="ttname"><a href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">yage::Camera::scale_</a></div><div class="ttdeci">float scale_</div><div class="ttdef"><b>Definition:</b> camera.h:23</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_a2a6ad87f9f4c38c3ffe6ec6c090e4c7c"><div class="ttname"><a href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">yage::Camera::update_matrix_</a></div><div class="ttdeci">bool update_matrix_</div><div class="ttdef"><b>Definition:</b> camera.h:22</div></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">zoom</a>(<span class="keywordtype">float</span> factor);</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;};</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classyage_1_1Camera_html"><div class="ttname"><a href="classyage_1_1Camera.html">yage::Camera</a></div><div class="ttdef"><b>Definition:</b> camera.h:19</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html"><div class="ttname"><a href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></div><div class="ttdef"><b>Definition:</b> glslprogram.h:19</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_af6239cd6ad44fcdcc12d7b183c8a0f86"><div class="ttname"><a href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">yage::Camera::update</a></div><div class="ttdeci">void update(GlslProgram &amp;program)</div><div class="ttdef"><b>Definition:</b> camera.cpp:25</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_af2a2daab94b27622cc0d7764b13edfc2"><div class="ttname"><a href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">yage::Camera::position_</a></div><div class="ttdeci">glm::vec2 position_</div><div class="ttdef"><b>Definition:</b> camera.h:24</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_a13be1e50638977d62cff9ffba1213611"><div class="ttname"><a href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">yage::Camera::Camera</a></div><div class="ttdeci">Camera(int screen_width=1280, int screen_height=720)</div><div class="ttdef"><b>Definition:</b> camera.cpp:18</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_a012820185cceb451926bc4ef1607b324"><div class="ttname"><a href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">yage::Camera::move</a></div><div class="ttdeci">void move(const glm::vec2 &amp;direction)</div><div class="ttdef"><b>Definition:</b> camera.cpp:41</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_a7419b0ba645f44f05fa125421c041e26"><div class="ttname"><a href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">yage::Camera::ortho_matrix_</a></div><div class="ttdeci">glm::mat4 ortho_matrix_</div><div class="ttdef"><b>Definition:</b> camera.h:26</div></div>
-<div class="ttc" id="classyage_1_1Camera_html_a2c1c0547d4c4a9bce102f2fb0c9071b3"><div class="ttname"><a href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">yage::Camera::camera_matrix_</a></div><div class="ttdeci">glm::mat4 camera_matrix_</div><div class="ttdef"><b>Definition:</b> camera.h:25</div></div>
+<div class="ttc" id="classyage_1_1Camera_html_a8b50af04dae6eca905c5008ef93b72d0"><div class="ttname"><a href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">yage::Camera::zoom</a></div><div class="ttdeci">void zoom(float factor)</div><div class="ttdoc">Zooms the camera by an incremental amount. </div><div class="ttdef"><b>Definition:</b> camera.cpp:78</div></div>
+<div class="ttc" id="classyage_1_1Camera_html_a13be1e50638977d62cff9ffba1213611"><div class="ttname"><a href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">yage::Camera::Camera</a></div><div class="ttdeci">Camera(int screen_width=1280, int screen_height=720)</div><div class="ttdoc">Creates a camera that looks onto the scene. </div><div class="ttdef"><b>Definition:</b> camera.cpp:27</div></div>
+<div class="ttc" id="classyage_1_1Shader_html"><div class="ttname"><a href="classyage_1_1Shader.html">yage::Shader</a></div><div class="ttdef"><b>Definition:</b> shader.h:20</div></div>
+<div class="ttc" id="classyage_1_1Camera_html_a012820185cceb451926bc4ef1607b324"><div class="ttname"><a href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">yage::Camera::move</a></div><div class="ttdeci">void move(const glm::vec2 &amp;direction)</div><div class="ttdoc">Moves the camera using a two-dimensional displacement vector to describe the movement. </div><div class="ttdef"><b>Definition:</b> camera.cpp:66</div></div>
+<div class="ttc" id="classyage_1_1Camera_html_a99f0af50db990c5558fd0b7b82f3978c"><div class="ttname"><a href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">yage::Camera::update</a></div><div class="ttdeci">void update(Shader &amp;program)</div><div class="ttdoc">Updates the camera matrix value in the shader program that is passed to it. </div><div class="ttdef"><b>Definition:</b> camera.cpp:44</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="camera_8h.html">camera.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classLogLevel.js b/classLogLevel.js
deleted file mode 100644
index 8fe0a87f..00000000
--- a/classLogLevel.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var classLogLevel =
-[
- [ "LogLevel", "classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec", null ]
-]; \ No newline at end of file
diff --git a/classes.html b/classes.html
index adc509ee..c30fff37 100644
--- a/classes.html
+++ b/classes.html
@@ -110,46 +110,50 @@ $(document).ready(function(){initNavTree('classes.html','');});
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;G&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1RigidBody.html">RigidBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
-</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1details_1_1Row.html">Row</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1Active.html">Active</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Matrix.html">Matrix</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1Vector.html">Vector</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+</td><td valign="top"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Shape.html">Shape</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector2.html">Vector2</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classyage_1_1Sprite.html">Sprite</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector3.html">Vector3</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1Active.html">Active</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1details_1_1Glyph.html">Glyph</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector4.html">Vector4</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1Glyph.html">Glyph</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector2.html">Vector2</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="structyage_1_1LogSink_1_1Model.html">LogSink::Model</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Sprite.html">Sprite</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector3.html">Vector3</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1Body.html">Body</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector4.html">Vector4</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1ImageLoader.html">ImageLoader</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1SpriteSheet.html">SpriteSheet</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1IoManager.html">IoManager</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1ParticleBody.html">ParticleBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classyage_1_1ParticleBody.html">ParticleBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1SpriteSheet.html">SpriteSheet</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structyage_1_1Position.html">Position</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1Camera.html">Camera</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="structyage_1_1Position.html">Position</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classyage_1_1Batch.html">Batch</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1ImageLoader.html">ImageLoader</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1Collider.html">Collider</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classyage_1_1Window.html">Window</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classyage_1_1CollisionBody.html">CollisionBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Logger.html">Logger</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="structyage_1_1Colour.html">Colour</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classLogLevel.html">LogLevel</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1RectangleCollider.html">RectangleCollider</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">LogSink::Concept</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1RenderBatch.html">RenderBatch</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classyage_1_1Body.html">Body</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1IoManager.html">IoManager</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Window.html">Window</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classyage_1_1Rectangle.html">Rectangle</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
+</td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1RectangleCollider.html">RectangleCollider</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1Camera.html">Camera</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Logger.html">Logger</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">RenderBatch</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1Collider.html">Collider</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1ResourceManager.html">ResourceManager</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1CollisionBody.html">CollisionBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1LogSink.html">LogSink</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1RigidBody.html">RigidBody</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structyage_1_1UV.html">UV</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="structyage_1_1Colour.html">Colour</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classyage_1_1details_1_1Row.html">Row</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="structyage_1_1details_1_1Coordinate.html">Coordinate</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="structyage_1_1details_1_1Coordinate.html">Coordinate</a> (<a class="el" href="namespaceyage_1_1details.html">yage::details</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1LogSink.html">LogSink</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1ResourceManager.html">ResourceManager</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td></td><td></td><td valign="top"><a class="el" href="structyage_1_1UV.html">UV</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classyage_1_1Matrix.html">Matrix</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classyage_1_1Vector.html">Vector</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td valign="top"><a class="el" href="classyage_1_1Shader.html">Shader</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classyage_1_1Drawable.html">Drawable</a> (<a class="el" href="namespaceyage.html">yage</a>)&#160;&#160;&#160;</td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Active-members.html b/classyage_1_1Active-members.html
index 3ff462e2..770b3b06 100644
--- a/classyage_1_1Active-members.html
+++ b/classyage_1_1Active-members.html
@@ -114,22 +114,17 @@ $(document).ready(function(){initNavTree('classyage_1_1Active.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1Active.html">yage::Active</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd">Active</a>(const Active &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">Active</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a> typedef</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">create</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">operator=</a>(const Active &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">queue_</a></td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">run</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">running_</a></td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a> typedef</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">create</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">operator=</a>(const Active &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326">send</a>(Callback message)</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">thread_</a></td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2">~Active</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2">~Active</a>()</td><td class="entry"><a class="el" href="classyage_1_1Active.html">yage::Active</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Active.html b/classyage_1_1Active.html
index 3d151e60..0ea63298 100644
--- a/classyage_1_1Active.html
+++ b/classyage_1_1Active.html
@@ -110,8 +110,6 @@ $(document).ready(function(){initNavTree('classyage_1_1Active.html','');});
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pri-methods">Private Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1Active-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::Active Class Reference</div> </div>
@@ -140,22 +138,6 @@ Public Member Functions</h2></td></tr>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aa2ed414bbe94fdd51c8aeb7ada73a064"><td class="memItemLeft" align="right" valign="top">static std::unique_ptr&lt; <a class="el" href="classyage_1_1Active.html">Active</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">create</a> ()</td></tr>
<tr class="separator:aa2ed414bbe94fdd51c8aeb7ada73a064"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
-Private Member Functions</h2></td></tr>
-<tr class="memitem:ad7b4b4cea1880d115dc5e3e1f80f404b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">Active</a> ()</td></tr>
-<tr class="separator:ad7b4b4cea1880d115dc5e3e1f80f404b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa9b25afe60999caaa6f261d1e79a351b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">run</a> ()</td></tr>
-<tr class="separator:aa9b25afe60999caaa6f261d1e79a351b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:ac32d54302bf084f0f7422cce5ee617db"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">running_</a></td></tr>
-<tr class="separator:ac32d54302bf084f0f7422cce5ee617db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c957af55704f6f30734054336f1a6d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a>&lt; <a class="el" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">queue_</a></td></tr>
-<tr class="separator:a8c957af55704f6f30734054336f1a6d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad673e2fd5b6c0c12de94ea7fcd750a50"><td class="memItemLeft" align="right" valign="top">std::thread&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">thread_</a></td></tr>
-<tr class="separator:ad673e2fd5b6c0c12de94ea7fcd750a50"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a4b82fec6f02c00d186b1b840ce8f11dc"></a>
@@ -210,29 +192,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ad7b4b4cea1880d115dc5e3e1f80f404b"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::Active::Active </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa2ed414bbe94fdd51c8aeb7ada73a064"></a>
<div class="memitem">
@@ -281,29 +240,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="aa9b25afe60999caaa6f261d1e79a351b"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::Active::run </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="a665673b94eb5ce7c448839e5bb6e0326"></a>
<div class="memitem">
<div class="memproto">
@@ -320,67 +256,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a8c957af55704f6f30734054336f1a6d3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a>&lt;<a class="el" href="classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc">Callback</a>&gt; yage::Active::queue_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac32d54302bf084f0f7422cce5ee617db"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">bool yage::Active::running_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad673e2fd5b6c0c12de94ea7fcd750a50"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::thread yage::Active::thread_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>yage/util/<a class="el" href="active_8h_source.html">active.h</a></li>
<li>yage/util/<a class="el" href="active_8cpp.html">active.cpp</a></li>
@@ -391,7 +266,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Active.html">Active</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Active.js b/classyage_1_1Active.js
index 5628cc94..8b1c7418 100644
--- a/classyage_1_1Active.js
+++ b/classyage_1_1Active.js
@@ -3,12 +3,7 @@ var classyage_1_1Active =
[ "Callback", "classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc", null ],
[ "Active", "classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd", null ],
[ "~Active", "classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2", null ],
- [ "Active", "classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b", null ],
[ "create", "classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064", null ],
[ "operator=", "classyage_1_1Active.html#add837044e73e4bc9849f09495535600c", null ],
- [ "run", "classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b", null ],
- [ "send", "classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326", null ],
- [ "queue_", "classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3", null ],
- [ "running_", "classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db", null ],
- [ "thread_", "classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50", null ]
+ [ "send", "classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326", null ]
]; \ No newline at end of file
diff --git a/classLogLevel.html b/classyage_1_1Batch-members.html
index 808fc91c..ea08f3d2 100644
--- a/classLogLevel.html
+++ b/classyage_1_1Batch-members.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: LogLevel Class Reference</title>
+<title>YAGE: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('classLogLevel.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Batch.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -106,47 +106,23 @@ $(document).ready(function(){initNavTree('classLogLevel.html','');});
</div>
<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="classLogLevel-members.html">List of all members</a> </div>
<div class="headertitle">
-<div class="title">LogLevel Class Reference</div> </div>
+<div class="title">yage::Batch Member List</div> </div>
</div><!--header-->
<div class="contents">
-<p><code>#include &lt;<a class="el" href="loglevel_8h_source.html">loglevel.h</a>&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae9961bbc0dfc8f5cce5889f39e1d47ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel</a> ()</td></tr>
-<tr class="separator:ae9961bbc0dfc8f5cce5889f39e1d47ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="ae9961bbc0dfc8f5cce5889f39e1d47ec"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">LogLevel::LogLevel </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="loglevel_8h_source.html">loglevel.h</a></li>
-</ul>
-</div><!-- contents -->
+<p>This is the complete list of members for <a class="el" href="classyage_1_1Batch.html">yage::Batch</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">begin</a>()</td><td class="entry"><a class="el" href="classyage_1_1Batch.html">yage::Batch</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">end</a>()</td><td class="entry"><a class="el" href="classyage_1_1Batch.html">yage::Batch</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">init</a>()</td><td class="entry"><a class="el" href="classyage_1_1Batch.html">yage::Batch</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">render</a>()</td><td class="entry"><a class="el" href="classyage_1_1Batch.html">yage::Batch</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="classLogLevel.html">LogLevel</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogSink_1_1Model.html b/classyage_1_1Batch.html
index bd38feff..28781f5c 100644
--- a/structyage_1_1LogSink_1_1Model.html
+++ b/classyage_1_1Batch.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage::LogSink::Model&lt; T &gt; Struct Template Reference</title>
+<title>YAGE: yage::Batch Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Model.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Batch.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -108,149 +108,137 @@ $(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Model.html','
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pub-attribs">Public Attributes</a> &#124;
-<a href="structyage_1_1LogSink_1_1Model-members.html">List of all members</a> </div>
+<a href="classyage_1_1Batch-members.html">List of all members</a> </div>
<div class="headertitle">
-<div class="title">yage::LogSink::Model&lt; T &gt; Struct Template Reference</div> </div>
+<div class="title">yage::Batch Class Reference</div> </div>
</div><!--header-->
<div class="contents">
-<div class="dynheader">
-Inheritance diagram for yage::LogSink::Model&lt; T &gt;:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="structyage_1_1LogSink_1_1Model.png" usemap="#yage::LogSink::Model&lt; T &gt;_map" alt=""/>
- <map id="yage::LogSink::Model&lt; T &gt;_map" name="yage::LogSink::Model&lt; T &gt;_map">
-<area href="structyage_1_1LogSink_1_1Concept.html" alt="yage::LogSink::Concept" shape="rect" coords="0,0,163,24"/>
-</map>
- </div></div>
+
+<p>The <a class="el" href="classyage_1_1Batch.html" title="The Batch class will be the base class for all the different batching processes that might use differ...">Batch</a> class will be the base class for all the different batching processes that might use different shaders and attributes.
+ <a href="classyage_1_1Batch.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="batch_8h_source.html">batch.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
-<tr class="memitem:a207d650bb7d170236eff7b705228e3d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">Model</a> (<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> impl_i)</td></tr>
-<tr class="separator:a207d650bb7d170236eff7b705228e3d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a30f256cae13bc0c1a0a93cae4909feaf"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">clone</a> () const override</td></tr>
-<tr class="separator:a30f256cae13bc0c1a0a93cae4909feaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae61438d2927d21b4af8f6ff2acc38224"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">write</a> (const <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta, const std::string &amp;msg) const override</td></tr>
-<tr class="separator:ae61438d2927d21b4af8f6ff2acc38224"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_methods_structyage_1_1LogSink_1_1Concept"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structyage_1_1LogSink_1_1Concept')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td></tr>
-<tr class="memitem:ada9b09f3614787df485134262b1bc7f1 inherit pub_methods_structyage_1_1LogSink_1_1Concept"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">~Concept</a> ()=default</td></tr>
-<tr class="separator:ada9b09f3614787df485134262b1bc7f1 inherit pub_methods_structyage_1_1LogSink_1_1Concept"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a99a011e95f7979baec2805df06d20c5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">impl</a></td></tr>
-<tr class="separator:a99a011e95f7979baec2805df06d20c5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0040228902f0a4cca90da23f36a7c477"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">init</a> ()</td></tr>
+<tr class="separator:a0040228902f0a4cca90da23f36a7c477"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab458f3129d2a329806dd00c6be77709d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">begin</a> ()</td></tr>
+<tr class="separator:ab458f3129d2a329806dd00c6be77709d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a322b0fe531c9cfa506d6d2dd786a236e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">end</a> ()</td></tr>
+<tr class="separator:a322b0fe531c9cfa506d6d2dd786a236e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3439c8dd88d87be4460161d233044c65"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">render</a> ()</td></tr>
+<tr class="separator:a3439c8dd88d87be4460161d233044c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a207d650bb7d170236eff7b705228e3d9"></a>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classyage_1_1Batch.html" title="The Batch class will be the base class for all the different batching processes that might use differ...">Batch</a> class will be the base class for all the different batching processes that might use different shaders and attributes. </p>
+<p>This is necessary because when we use a different shader, we have to bind a specific number of attributes, and we might not always want to have a texture, colours and coordinates, for example, when only using simple shapes.</p>
+<h1>Batching </h1>
+<p>The purpose of batching is to combine all sprites that use the same textures so that the textures does not have to be switched out on the gpu very often. This produces a much more efficient rendering process. An implementation of this can be seen in the <a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> class, as it sorts and renders the objects you give it.</p>
+<p>The reason this base class exists, is because it makes it easier to also render objects that may not need a texture, or may require multiple textures or different attributes. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ab458f3129d2a329806dd00c6be77709d"></a>
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::<a class="el" href="structyage_1_1LogSink_1_1Model.html">Model</a> </td>
+ <td class="memname">virtual void yage::Batch::begin </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>&#160;</td>
- <td class="paramname"><em>impl_i</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
</div><div class="memdoc">
</div>
</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a30f256cae13bc0c1a0a93cae4909feaf"></a>
+<a class="anchor" id="a322b0fe531c9cfa506d6d2dd786a236e"></a>
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">LogSink::Concept</a> * <a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::clone </td>
+ <td class="memname">virtual void yage::Batch::end </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
-<p>Implements <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">yage::LogSink::Concept</a>.</p>
-
</div>
</div>
-<a class="anchor" id="ae61438d2927d21b4af8f6ff2acc38224"></a>
+<a class="anchor" id="a0040228902f0a4cca90da23f36a7c477"></a>
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void <a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::write </td>
+ <td class="memname">virtual bool yage::Batch::init </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;&#160;</td>
- <td class="paramname"><em>meta</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>msg</em>&#160;</td>
- </tr>
- <tr>
+ <td class="paramname"></td><td>)</td>
<td></td>
- <td>)</td>
- <td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
-<p>Implements <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">yage::LogSink::Concept</a>.</p>
-
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a99a011e95f7979baec2805df06d20c5d"></a>
+<a class="anchor" id="a3439c8dd88d87be4460161d233044c65"></a>
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::impl</td>
+ <td class="memname">virtual void yage::Batch::render </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
</tr>
</table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
</div><div class="memdoc">
</div>
</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="logsink_8h_source.html">logsink.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>yage/render/<a class="el" href="batch_8h_source.html">batch.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1LogSink.html">LogSink</a></li><li class="navelem"><a class="el" href="structyage_1_1LogSink_1_1Model.html">Model</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Batch.html">Batch</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Batch.js b/classyage_1_1Batch.js
new file mode 100644
index 00000000..7b07b8e1
--- /dev/null
+++ b/classyage_1_1Batch.js
@@ -0,0 +1,7 @@
+var classyage_1_1Batch =
+[
+ [ "begin", "classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d", null ],
+ [ "end", "classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e", null ],
+ [ "init", "classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477", null ],
+ [ "render", "classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65", null ]
+]; \ No newline at end of file
diff --git a/classyage_1_1Body-members.html b/classyage_1_1Body-members.html
index 8c147c3f..c2e999a2 100644
--- a/classyage_1_1Body-members.html
+++ b/classyage_1_1Body-members.html
@@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Body.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Body.html b/classyage_1_1Body.html
index f77d1504..6e355897 100644
--- a/classyage_1_1Body.html
+++ b/classyage_1_1Body.html
@@ -446,7 +446,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Body.html">Body</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Camera-members.html b/classyage_1_1Camera-members.html
index 665d39f8..4ef7ef88 100644
--- a/classyage_1_1Camera-members.html
+++ b/classyage_1_1Camera-members.html
@@ -114,19 +114,15 @@ $(document).ready(function(){initNavTree('classyage_1_1Camera.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1Camera.html">yage::Camera</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">Camera</a>(int screen_width=1280, int screen_height=720)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">camera_matrix_</a></td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">move</a>(const glm::vec2 &amp;direction)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">ortho_matrix_</a></td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">position_</a></td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">scale_</a></td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">update</a>(GlslProgram &amp;program)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">update_matrix_</a></td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">move</a>(const glm::vec2 &amp;direction)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">update</a>(Shader &amp;program)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">zoom</a>(float factor)</td><td class="entry"><a class="el" href="classyage_1_1Camera.html">yage::Camera</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Camera.html b/classyage_1_1Camera.html
index a2992d24..d66ed4d1 100644
--- a/classyage_1_1Camera.html
+++ b/classyage_1_1Camera.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1Camera.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1Camera-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::Camera Class Reference</div> </div>
@@ -120,24 +119,17 @@ $(document).ready(function(){initNavTree('classyage_1_1Camera.html','');});
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a13be1e50638977d62cff9ffba1213611"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">Camera</a> (int screen_width=1280, int screen_height=720)</td></tr>
+<tr class="memdesc:a13be1e50638977d62cff9ffba1213611"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a camera that looks onto the scene. <a href="#a13be1e50638977d62cff9ffba1213611">More...</a><br/></td></tr>
<tr class="separator:a13be1e50638977d62cff9ffba1213611"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af6239cd6ad44fcdcc12d7b183c8a0f86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">update</a> (<a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;program)</td></tr>
-<tr class="separator:af6239cd6ad44fcdcc12d7b183c8a0f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a99f0af50db990c5558fd0b7b82f3978c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">update</a> (<a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;program)</td></tr>
+<tr class="memdesc:a99f0af50db990c5558fd0b7b82f3978c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the camera matrix value in the shader program that is passed to it. <a href="#a99f0af50db990c5558fd0b7b82f3978c">More...</a><br/></td></tr>
+<tr class="separator:a99f0af50db990c5558fd0b7b82f3978c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a012820185cceb451926bc4ef1607b324"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">move</a> (const glm::vec2 &amp;direction)</td></tr>
+<tr class="memdesc:a012820185cceb451926bc4ef1607b324"><td class="mdescLeft">&#160;</td><td class="mdescRight">Moves the camera using a two-dimensional displacement vector to describe the movement. <a href="#a012820185cceb451926bc4ef1607b324">More...</a><br/></td></tr>
<tr class="separator:a012820185cceb451926bc4ef1607b324"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a2a6ad87f9f4c38c3ffe6ec6c090e4c7c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">update_matrix_</a> = true</td></tr>
-<tr class="separator:a2a6ad87f9f4c38c3ffe6ec6c090e4c7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a665b599105c6930711d31ada6e12dc8f"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">scale_</a> = 1</td></tr>
-<tr class="separator:a665b599105c6930711d31ada6e12dc8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2a2daab94b27622cc0d7764b13edfc2"><td class="memItemLeft" align="right" valign="top">glm::vec2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">position_</a></td></tr>
-<tr class="separator:af2a2daab94b27622cc0d7764b13edfc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2c1c0547d4c4a9bce102f2fb0c9071b3"><td class="memItemLeft" align="right" valign="top">glm::mat4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">camera_matrix_</a></td></tr>
-<tr class="separator:a2c1c0547d4c4a9bce102f2fb0c9071b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7419b0ba645f44f05fa125421c041e26"><td class="memItemLeft" align="right" valign="top">glm::mat4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">ortho_matrix_</a></td></tr>
-<tr class="separator:a7419b0ba645f44f05fa125421c041e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b50af04dae6eca905c5008ef93b72d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">zoom</a> (float factor)</td></tr>
+<tr class="memdesc:a8b50af04dae6eca905c5008ef93b72d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zooms the camera by an incremental amount. <a href="#a8b50af04dae6eca905c5008ef93b72d0">More...</a><br/></td></tr>
+<tr class="separator:a8b50af04dae6eca905c5008ef93b72d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a13be1e50638977d62cff9ffba1213611"></a>
@@ -164,6 +156,16 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Creates a camera that looks onto the scene. </p>
+<p>The screen width and screen height should be the current size of the window that the camera is being used on so that is functions correctly.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">screen_width</td><td>Current screen width of the <a class="el" href="classyage_1_1Window.html">Window</a>. </td></tr>
+ <tr><td class="paramname">screen_height</td><td>Current screen height of the <a class="el" href="classyage_1_1Window.html">Window</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
@@ -181,122 +183,63 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Moves the camera using a two-dimensional displacement vector to describe the movement. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">direction</td><td>Two-dimensional vector to describe the displacement of the camera. </td></tr>
+ </table>
+ </dd>
+</dl>
+
</div>
</div>
-<a class="anchor" id="af6239cd6ad44fcdcc12d7b183c8a0f86"></a>
+<a class="anchor" id="a99f0af50db990c5558fd0b7b82f3978c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void yage::Camera::update </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&#160;</td>
+ <td class="paramtype"><a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&#160;</td>
<td class="paramname"><em>program</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a2c1c0547d4c4a9bce102f2fb0c9071b3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">glm::mat4 yage::Camera::camera_matrix_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7419b0ba645f44f05fa125421c041e26"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">glm::mat4 yage::Camera::ortho_matrix_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2a2daab94b27622cc0d7764b13edfc2"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">glm::vec2 yage::Camera::position_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
+<p>Updates the camera matrix value in the shader program that is passed to it. </p>
+<p>This must be a parameter <code>P</code> in the shader for this function to work.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">program</td><td><a class="el" href="classyage_1_1Shader.html">Shader</a> program to make changes to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>Make this function more general to be able to be able to use any parametre in then shader as the camera matrix and not make it dependent on it being <code>P</code>. </dd></dl>
</div>
</div>
-<a class="anchor" id="a665b599105c6930711d31ada6e12dc8f"></a>
+<a class="anchor" id="a8b50af04dae6eca905c5008ef93b72d0"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">float yage::Camera::scale_ = 1</td>
+ <td class="memname">void yage::Camera::zoom </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>factor</em></td><td>)</td>
+ <td></td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
-</div>
-</div>
-<a class="anchor" id="a2a6ad87f9f4c38c3ffe6ec6c090e4c7c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">bool yage::Camera::update_matrix_ = true</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
+<p>Zooms the camera by an incremental amount. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">factor</td><td>Factor by which the camera should zoom. This can also be a negative number for the camera to zoom out. </td></tr>
+ </table>
+ </dd>
+</dl>
</div>
</div>
@@ -310,7 +253,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Camera.html">Camera</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Camera.js b/classyage_1_1Camera.js
index 8e2afa61..fc42c3c3 100644
--- a/classyage_1_1Camera.js
+++ b/classyage_1_1Camera.js
@@ -2,10 +2,6 @@ var classyage_1_1Camera =
[
[ "Camera", "classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611", null ],
[ "move", "classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324", null ],
- [ "update", "classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86", null ],
- [ "camera_matrix_", "classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3", null ],
- [ "ortho_matrix_", "classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26", null ],
- [ "position_", "classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2", null ],
- [ "scale_", "classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f", null ],
- [ "update_matrix_", "classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c", null ]
+ [ "update", "classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c", null ],
+ [ "zoom", "classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1Collider-members.html b/classyage_1_1Collider-members.html
index cc186dfe..6069c841 100644
--- a/classyage_1_1Collider-members.html
+++ b/classyage_1_1Collider-members.html
@@ -123,7 +123,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Collider.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Collider.html b/classyage_1_1Collider.html
index 5ddc9077..467c8a4b 100644
--- a/classyage_1_1Collider.html
+++ b/classyage_1_1Collider.html
@@ -280,7 +280,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Collider.html">Collider</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1CollisionBody-members.html b/classyage_1_1CollisionBody-members.html
index 8f9172a7..bd3782c7 100644
--- a/classyage_1_1CollisionBody-members.html
+++ b/classyage_1_1CollisionBody-members.html
@@ -132,7 +132,7 @@ $(document).ready(function(){initNavTree('classyage_1_1CollisionBody.html','');}
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1CollisionBody.html b/classyage_1_1CollisionBody.html
index f22fa0bb..2f16cf8f 100644
--- a/classyage_1_1CollisionBody.html
+++ b/classyage_1_1CollisionBody.html
@@ -211,7 +211,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1CollisionBody.html">CollisionBody</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classLogLevel-members.html b/classyage_1_1Drawable-members.html
index 29a16c37..d863b509 100644
--- a/classLogLevel-members.html
+++ b/classyage_1_1Drawable-members.html
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('classLogLevel.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Drawable.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -107,19 +107,19 @@ $(document).ready(function(){initNavTree('classLogLevel.html','');});
<div class="header">
<div class="headertitle">
-<div class="title">LogLevel Member List</div> </div>
+<div class="title">yage::Drawable Member List</div> </div>
</div><!--header-->
<div class="contents">
-<p>This is the complete list of members for <a class="el" href="classLogLevel.html">LogLevel</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel</a>()</td><td class="entry"><a class="el" href="classLogLevel.html">LogLevel</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a>(SpriteBatch &amp;sp)=0</td><td class="entry"><a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Drawable.html b/classyage_1_1Drawable.html
new file mode 100644
index 00000000..dbd2109b
--- /dev/null
+++ b/classyage_1_1Drawable.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage::Drawable Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classyage_1_1Drawable.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classyage_1_1Drawable-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">yage::Drawable Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="drawable_8h_source.html">drawable.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for yage::Drawable:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classyage_1_1Drawable.png" usemap="#yage::Drawable_map" alt=""/>
+ <map id="yage::Drawable_map" name="yage::Drawable_map">
+<area href="classyage_1_1Shape.html" alt="yage::Shape" shape="rect" coords="0,56,102,80"/>
+<area href="classyage_1_1Rectangle.html" alt="yage::Rectangle" shape="rect" coords="0,112,102,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:abee95e68b5bffef86a35dafca296c45e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a> (<a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;sp)=0</td></tr>
+<tr class="separator:abee95e68b5bffef86a35dafca296c45e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="abee95e68b5bffef86a35dafca296c45e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void yage::Drawable::draw </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;&#160;</td>
+ <td class="paramname"><em>sp</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>yage/render/<a class="el" href="drawable_8h_source.html">drawable.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Drawable.html">Drawable</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/classyage_1_1Drawable.js b/classyage_1_1Drawable.js
new file mode 100644
index 00000000..9b0202f2
--- /dev/null
+++ b/classyage_1_1Drawable.js
@@ -0,0 +1,4 @@
+var classyage_1_1Drawable =
+[
+ [ "draw", "classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e", null ]
+]; \ No newline at end of file
diff --git a/classyage_1_1Drawable.png b/classyage_1_1Drawable.png
new file mode 100644
index 00000000..b2d21aae
--- /dev/null
+++ b/classyage_1_1Drawable.png
Binary files differ
diff --git a/classyage_1_1GlslProgram-members.html b/classyage_1_1GlslProgram-members.html
deleted file mode 100644
index b99218bf..00000000
--- a/classyage_1_1GlslProgram-members.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">YAGE
- &#160;<span id="projectnumber">v0.1.3.0</span>
- </div>
- <div id="projectbrief">Yet Another Game Engine</div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1GlslProgram.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">yage::GlslProgram Member List</div> </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a>, including all inherited members.</p>
-<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">addAttribute</a>(const std::string &amp;attribute_name)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">attribute_index_</a></td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">compileShader</a>(GLuint shader, const std::string &amp;shaderContent)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">compileShaderFromFile</a>(GLuint shader, const std::string &amp;file_path)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">compileShaders</a>(const std::string &amp;vertexShader, const std::string fragmentShader)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">compileShadersFromFile</a>(const std::string &amp;vertex_shader_path, const std::string &amp;fragment_shader_path)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">defaultSetup</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">fragment_shader_id_</a></td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">getUniformLocation</a>(const std::string &amp;uniform_name)</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">GlslProgram</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd">GlslProgram</a>(const GlslProgram &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290">GlslProgram</a>(GlslProgram &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">initShaderId</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">linkShaders</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">operator=</a>(const GlslProgram &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2">operator=</a>(GlslProgram &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">program_id_</a></td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">unuse</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">use</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">vertex_shader_id_</a></td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">~GlslProgram</a>()</td><td class="entry"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-</div><!-- doc-content -->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/classyage_1_1GlslProgram.html b/classyage_1_1GlslProgram.html
deleted file mode 100644
index 03802e5b..00000000
--- a/classyage_1_1GlslProgram.html
+++ /dev/null
@@ -1,644 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage::GlslProgram Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">YAGE
- &#160;<span id="projectnumber">v0.1.3.0</span>
- </div>
- <div id="projectbrief">Yet Another Game Engine</div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1GlslProgram.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-methods">Private Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
-<a href="classyage_1_1GlslProgram-members.html">List of all members</a> </div>
- <div class="headertitle">
-<div class="title">yage::GlslProgram Class Reference</div> </div>
-</div><!--header-->
-<div class="contents">
-
-<p><code>#include &lt;<a class="el" href="glslprogram_8h_source.html">glslprogram.h</a>&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a721b43cbdf82dbf68b3a4f3304a135c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">GlslProgram</a> ()=default</td></tr>
-<tr class="separator:a721b43cbdf82dbf68b3a4f3304a135c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a78268f78af00bcb2358d48bb010aa9fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd">GlslProgram</a> (const <a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;)=delete</td></tr>
-<tr class="separator:a78268f78af00bcb2358d48bb010aa9fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2cea717928baf5feed2ac5dc2a03290"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290">GlslProgram</a> (<a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;)=delete</td></tr>
-<tr class="separator:af2cea717928baf5feed2ac5dc2a03290"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a45676c850afad2717fd4119eb8c02ef7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">~GlslProgram</a> ()</td></tr>
-<tr class="separator:a45676c850afad2717fd4119eb8c02ef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5af953324ac9f89aecf7e0a73a9467ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">operator=</a> (const <a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;)=delete</td></tr>
-<tr class="separator:a5af953324ac9f89aecf7e0a73a9467ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0de6e3d7c8e39357c7b0f91d85b21fb2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2">operator=</a> (<a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;)=delete</td></tr>
-<tr class="separator:a0de6e3d7c8e39357c7b0f91d85b21fb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa97d015c12b29a4ccf5f3fe75a33db5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">compileShaders</a> (const std::string &amp;vertexShader, const std::string fragmentShader)</td></tr>
-<tr class="memdesc:aa97d015c12b29a4ccf5f3fe75a33db5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">compiles vertex and fragment shader <a href="#aa97d015c12b29a4ccf5f3fe75a33db5c">More...</a><br/></td></tr>
-<tr class="separator:aa97d015c12b29a4ccf5f3fe75a33db5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff700034b2742769a0869944948dc430"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">compileShadersFromFile</a> (const std::string &amp;vertex_shader_path, const std::string &amp;fragment_shader_path)</td></tr>
-<tr class="separator:aff700034b2742769a0869944948dc430"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed74ec6db4d2b02e1172bd5694eb1b27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">linkShaders</a> ()</td></tr>
-<tr class="separator:aed74ec6db4d2b02e1172bd5694eb1b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e38b9f5daaf4b111b69e4d2900d4970"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">addAttribute</a> (const std::string &amp;attribute_name)</td></tr>
-<tr class="separator:a4e38b9f5daaf4b111b69e4d2900d4970"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a255ccbb1d94d17f2de62319efd4be91d"><td class="memItemLeft" align="right" valign="top">GLint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">getUniformLocation</a> (const std::string &amp;uniform_name)</td></tr>
-<tr class="separator:a255ccbb1d94d17f2de62319efd4be91d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a762b44540ef219ff39f784543fc162c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">use</a> ()</td></tr>
-<tr class="separator:a762b44540ef219ff39f784543fc162c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2afa98cbf5d25b634e01b863c33fcf8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">unuse</a> ()</td></tr>
-<tr class="separator:a2afa98cbf5d25b634e01b863c33fcf8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1260a2302c1434ce38c850dc18cbc04e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">defaultSetup</a> ()</td></tr>
-<tr class="separator:a1260a2302c1434ce38c850dc18cbc04e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
-Private Member Functions</h2></td></tr>
-<tr class="memitem:a7f566bb89d01dbdeea4e034b36bf7cd4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">compileShader</a> (GLuint shader, const std::string &amp;shaderContent)</td></tr>
-<tr class="memdesc:a7f566bb89d01dbdeea4e034b36bf7cd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">compiles one shader <a href="#a7f566bb89d01dbdeea4e034b36bf7cd4">More...</a><br/></td></tr>
-<tr class="separator:a7f566bb89d01dbdeea4e034b36bf7cd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a07a4484f76091689c35a8f7617b7c2e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">compileShaderFromFile</a> (GLuint shader, const std::string &amp;file_path)</td></tr>
-<tr class="separator:a07a4484f76091689c35a8f7617b7c2e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43838529286cfc954ef2db3229274dd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">initShaderId</a> ()</td></tr>
-<tr class="separator:a43838529286cfc954ef2db3229274dd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:ad8f02beee9fdc3608d7aceebf3398e8b"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">program_id_</a> = 0</td></tr>
-<tr class="memdesc:ad8f02beee9fdc3608d7aceebf3398e8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">compiled shader program id <a href="#ad8f02beee9fdc3608d7aceebf3398e8b">More...</a><br/></td></tr>
-<tr class="separator:ad8f02beee9fdc3608d7aceebf3398e8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe46af121e9c0214be6f7b18660c5bc7"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">vertex_shader_id_</a> = 0</td></tr>
-<tr class="separator:afe46af121e9c0214be6f7b18660c5bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad20ee225c8e981861923a2d7eeaf940f"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">fragment_shader_id_</a> = 0</td></tr>
-<tr class="separator:ad20ee225c8e981861923a2d7eeaf940f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a55d4f797833c688be78c00882112e486"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">attribute_index_</a> = 0</td></tr>
-<tr class="separator:a55d4f797833c688be78c00882112e486"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a721b43cbdf82dbf68b3a4f3304a135c4"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::GlslProgram::GlslProgram </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">default</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a78268f78af00bcb2358d48bb010aa9fd"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::GlslProgram::GlslProgram </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">delete</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2cea717928baf5feed2ac5dc2a03290"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::GlslProgram::GlslProgram </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">delete</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a45676c850afad2717fd4119eb8c02ef7"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">yage::GlslProgram::~GlslProgram </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>cleans up all the shaders and the program </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a4e38b9f5daaf4b111b69e4d2900d4970"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::addAttribute </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>attribute_name</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7f566bb89d01dbdeea4e034b36bf7cd4"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::compileShader </td>
- <td>(</td>
- <td class="paramtype">GLuint&#160;</td>
- <td class="paramname"><em>shader</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>shaderContent</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a07a4484f76091689c35a8f7617b7c2e6"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::compileShaderFromFile </td>
- <td>(</td>
- <td class="paramtype">GLuint&#160;</td>
- <td class="paramname"><em>shader</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>file_path</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa97d015c12b29a4ccf5f3fe75a33db5c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::compileShaders </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>vertexShader</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string&#160;</td>
- <td class="paramname"><em>fragmentShader</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aff700034b2742769a0869944948dc430"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::compileShadersFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>vertex_shader_path</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>fragment_shader_path</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1260a2302c1434ce38c850dc18cbc04e"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::defaultSetup </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a255ccbb1d94d17f2de62319efd4be91d"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLint yage::GlslProgram::getUniformLocation </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>uniform_name</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43838529286cfc954ef2db3229274dd9"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::initShaderId </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aed74ec6db4d2b02e1172bd5694eb1b27"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::linkShaders </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5af953324ac9f89aecf7e0a73a9467ad"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a>&amp; yage::GlslProgram::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">delete</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0de6e3d7c8e39357c7b0f91d85b21fb2"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a>&amp; yage::GlslProgram::operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">delete</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2afa98cbf5d25b634e01b863c33fcf8f"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::unuse </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a762b44540ef219ff39f784543fc162c3"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::GlslProgram::use </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a55d4f797833c688be78c00882112e486"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">int yage::GlslProgram::attribute_index_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad20ee225c8e981861923a2d7eeaf940f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::GlslProgram::fragment_shader_id_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad8f02beee9fdc3608d7aceebf3398e8b"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::GlslProgram::program_id_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe46af121e9c0214be6f7b18660c5bc7"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::GlslProgram::vertex_shader_id_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following files:<ul>
-<li>yage/core/<a class="el" href="glslprogram_8h_source.html">glslprogram.h</a></li>
-<li>yage/core/<a class="el" href="glslprogram_8cpp.html">glslprogram.cpp</a></li>
-</ul>
-</div><!-- contents -->
-</div><!-- doc-content -->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/classyage_1_1GlslProgram.js b/classyage_1_1GlslProgram.js
deleted file mode 100644
index 18a74c50..00000000
--- a/classyage_1_1GlslProgram.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var classyage_1_1GlslProgram =
-[
- [ "GlslProgram", "classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4", null ],
- [ "GlslProgram", "classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd", null ],
- [ "GlslProgram", "classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290", null ],
- [ "~GlslProgram", "classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7", null ],
- [ "addAttribute", "classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970", null ],
- [ "compileShader", "classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4", null ],
- [ "compileShaderFromFile", "classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6", null ],
- [ "compileShaders", "classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c", null ],
- [ "compileShadersFromFile", "classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430", null ],
- [ "defaultSetup", "classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e", null ],
- [ "getUniformLocation", "classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d", null ],
- [ "initShaderId", "classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9", null ],
- [ "linkShaders", "classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27", null ],
- [ "operator=", "classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad", null ],
- [ "operator=", "classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2", null ],
- [ "unuse", "classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f", null ],
- [ "use", "classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3", null ],
- [ "attribute_index_", "classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486", null ],
- [ "fragment_shader_id_", "classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f", null ],
- [ "program_id_", "classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b", null ],
- [ "vertex_shader_id_", "classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7", null ]
-]; \ No newline at end of file
diff --git a/classyage_1_1Glyph.html b/classyage_1_1Glyph.html
deleted file mode 100644
index 0678fac9..00000000
--- a/classyage_1_1Glyph.html
+++ /dev/null
@@ -1,482 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage::Glyph Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">YAGE
- &#160;<span id="projectnumber">v0.1.3.0</span>
- </div>
- <div id="projectbrief">Yet Another Game Engine</div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1Glyph.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
-<a href="classyage_1_1Glyph-members.html">List of all members</a> </div>
- <div class="headertitle">
-<div class="title">yage::Glyph Class Reference</div> </div>
-</div><!--header-->
-<div class="contents">
-
-<p><a class="el" href="classyage_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture.
-</p>
-
-<p><code>#include &lt;<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a>&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a19ae31e594b33bb1ad3bc1763cdba38f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">Glyph</a> (GLuint <a class="el" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">texture</a>, float <a class="el" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">depth</a>, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="el" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">top_left</a>, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="el" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">top_right</a>, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="el" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">bottom_right</a>, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="el" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">bottom_left</a>)</td></tr>
-<tr class="separator:a19ae31e594b33bb1ad3bc1763cdba38f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d5bfd4874a5d29c96a3d22f45543eb2"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">texture</a> () const </td></tr>
-<tr class="separator:a0d5bfd4874a5d29c96a3d22f45543eb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7b8b85a8044d751cfa29135690c23ff9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">depth</a> () const </td></tr>
-<tr class="separator:a7b8b85a8044d751cfa29135690c23ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8e54b98d17907e0088360416fe978e1f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">top_left</a> () const </td></tr>
-<tr class="separator:a8e54b98d17907e0088360416fe978e1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4930084a1071cd3274b2aa885f26ecec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">top_right</a> () const </td></tr>
-<tr class="separator:a4930084a1071cd3274b2aa885f26ecec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8979cbe2f07cf12cf537a2bd88df99a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">bottom_right</a> () const </td></tr>
-<tr class="separator:a8979cbe2f07cf12cf537a2bd88df99a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa94ec682d592c86e2c08560919d675a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">bottom_left</a> () const </td></tr>
-<tr class="separator:aa94ec682d592c86e2c08560919d675a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a2efbe49c2307601731416d615ac415c8"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">texture_</a></td></tr>
-<tr class="separator:a2efbe49c2307601731416d615ac415c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab27b92a62dcebccae673a7d8d0c15704"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">depth_</a></td></tr>
-<tr class="separator:ab27b92a62dcebccae673a7d8d0c15704"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a71c5c3381928153e3eb2f67461b76a2d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">top_left_</a></td></tr>
-<tr class="separator:a71c5c3381928153e3eb2f67461b76a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9db1936e683cafe3b6ef72f63b3241fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">top_right_</a></td></tr>
-<tr class="separator:a9db1936e683cafe3b6ef72f63b3241fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6240a88991e31b2fc8ed5dccfc362234"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">bottom_right_</a></td></tr>
-<tr class="separator:a6240a88991e31b2fc8ed5dccfc362234"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add70123a08d594e4cfb627a03ae8daad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">bottom_left_</a></td></tr>
-<tr class="separator:add70123a08d594e4cfb627a03ae8daad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a19ae31e594b33bb1ad3bc1763cdba38f"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">yage::Glyph::Glyph </td>
- <td>(</td>
- <td class="paramtype">GLuint&#160;</td>
- <td class="paramname"><em>texture</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float&#160;</td>
- <td class="paramname"><em>depth</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
- <td class="paramname"><em>top_left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
- <td class="paramname"><em>top_right</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
- <td class="paramname"><em>bottom_right</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
- <td class="paramname"><em>bottom_left</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aa94ec682d592c86e2c08560919d675a1"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::bottom_left </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8979cbe2f07cf12cf537a2bd88df99a2"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::bottom_right </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7b8b85a8044d751cfa29135690c23ff9"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Glyph::depth </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0d5bfd4874a5d29c96a3d22f45543eb2"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::Glyph::texture </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8e54b98d17907e0088360416fe978e1f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::top_left </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4930084a1071cd3274b2aa885f26ecec"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::top_right </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="add70123a08d594e4cfb627a03ae8daad"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::bottom_left_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6240a88991e31b2fc8ed5dccfc362234"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::bottom_right_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab27b92a62dcebccae673a7d8d0c15704"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Glyph::depth_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2efbe49c2307601731416d615ac415c8"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::Glyph::texture_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a71c5c3381928153e3eb2f67461b76a2d"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::top_left_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9db1936e683cafe3b6ef72f63b3241fa"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::Glyph::top_right_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following files:<ul>
-<li>yage/core/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
-<li>yage/core/<a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
-</ul>
-</div><!-- contents -->
-</div><!-- doc-content -->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Glyph.html">Glyph</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/classyage_1_1Glyph.js b/classyage_1_1Glyph.js
deleted file mode 100644
index fab278da..00000000
--- a/classyage_1_1Glyph.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var classyage_1_1Glyph =
-[
- [ "Glyph", "classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f", null ],
- [ "bottom_left", "classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1", null ],
- [ "bottom_right", "classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2", null ],
- [ "depth", "classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9", null ],
- [ "texture", "classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2", null ],
- [ "top_left", "classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f", null ],
- [ "top_right", "classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec", null ],
- [ "bottom_left_", "classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad", null ],
- [ "bottom_right_", "classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234", null ],
- [ "depth_", "classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704", null ],
- [ "texture_", "classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8", null ],
- [ "top_left_", "classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d", null ],
- [ "top_right_", "classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa", null ]
-]; \ No newline at end of file
diff --git a/classyage_1_1ImageLoader-members.html b/classyage_1_1ImageLoader-members.html
index 0d4dead6..4608af36 100644
--- a/classyage_1_1ImageLoader-members.html
+++ b/classyage_1_1ImageLoader-members.html
@@ -119,7 +119,7 @@ $(document).ready(function(){initNavTree('classyage_1_1ImageLoader.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1ImageLoader.html b/classyage_1_1ImageLoader.html
index 1729ca1c..a761d079 100644
--- a/classyage_1_1ImageLoader.html
+++ b/classyage_1_1ImageLoader.html
@@ -156,7 +156,7 @@ Static Public Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1ImageLoader.html">ImageLoader</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1IoManager-members.html b/classyage_1_1IoManager-members.html
index cc5ae1c9..07a7092f 100644
--- a/classyage_1_1IoManager-members.html
+++ b/classyage_1_1IoManager-members.html
@@ -119,7 +119,7 @@ $(document).ready(function(){initNavTree('classyage_1_1IoManager.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1IoManager.html b/classyage_1_1IoManager.html
index 6965a4c1..8b9c5f26 100644
--- a/classyage_1_1IoManager.html
+++ b/classyage_1_1IoManager.html
@@ -166,7 +166,7 @@ Static Public Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1IoManager.html">IoManager</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1LogMessage-members.html b/classyage_1_1LogMessage-members.html
index df12adf0..b7625aa8 100644
--- a/classyage_1_1LogMessage-members.html
+++ b/classyage_1_1LogMessage-members.html
@@ -113,24 +113,19 @@ $(document).ready(function(){initNavTree('classyage_1_1LogMessage.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">buffer_</a></td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a">Logger</a> class</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(const LogMessage &amp;msg)=delete</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f">LogMessage</a>(Logger *owner, const std::string &amp;fileName_i, int lineNum_i)</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0">LogMessage</a>(LogMessage &amp;&amp;msg)</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">meta_</a></td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a">Logger</a> class</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(const LogMessage &amp;msg)=delete</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">operator&lt;&lt;</a>(const T &amp;value)</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab">operator&lt;&lt;</a>(std::ostream &amp;(*fn)(std::ostream &amp;os))</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">operator=</a>(const LogMessage &amp;msg)=delete</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da">operator=</a>(LogMessage &amp;&amp;msg)=delete</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">owner_</a></td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">~LogMessage</a>()</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">~LogMessage</a>()</td><td class="entry"><a class="el" href="classyage_1_1LogMessage.html">yage::LogMessage</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1LogMessage.html b/classyage_1_1LogMessage.html
index 81674886..4586f8a8 100644
--- a/classyage_1_1LogMessage.html
+++ b/classyage_1_1LogMessage.html
@@ -109,8 +109,6 @@ $(document).ready(function(){initNavTree('classyage_1_1LogMessage.html','');});
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-methods">Private Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classyage_1_1LogMessage-members.html">List of all members</a> </div>
<div class="headertitle">
@@ -141,22 +139,6 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a855e0e72055f785def530feaf27cbeab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab">operator&lt;&lt;</a> (std::ostream &amp;(*fn)(std::ostream &amp;os))</td></tr>
<tr class="separator:a855e0e72055f785def530feaf27cbeab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
-Private Member Functions</h2></td></tr>
-<tr class="memitem:a9c6df412c175708a17be412fa8d6644f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f">LogMessage</a> (<a class="el" href="classyage_1_1Logger.html">Logger</a> *owner, const std::string &amp;fileName_i, int lineNum_i)</td></tr>
-<tr class="separator:a9c6df412c175708a17be412fa8d6644f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2ad7f4e8ddfea01ab99d09ac74f8d4d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0">LogMessage</a> (<a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;msg)</td></tr>
-<tr class="separator:a2ad7f4e8ddfea01ab99d09ac74f8d4d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:ae34f407242db5713632181b4ce9ae3d5"><td class="memItemLeft" align="right" valign="top">std::ostringstream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">buffer_</a></td></tr>
-<tr class="separator:ae34f407242db5713632181b4ce9ae3d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad093f33360fc32ef014d215b0c1d4792"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1Logger.html">Logger</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">owner_</a></td></tr>
-<tr class="separator:ad093f33360fc32ef014d215b0c1d4792"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a80b72c0e143b382538c347c201cbb4ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">meta_</a></td></tr>
-<tr class="separator:a80b72c0e143b382538c347c201cbb4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aff02b76416d2846736b7ecd798921a0a"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a">Logger</a></td></tr>
@@ -202,70 +184,6 @@ Friends</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a9c6df412c175708a17be412fa8d6644f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::LogMessage::LogMessage </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classyage_1_1Logger.html">Logger</a> *&#160;</td>
- <td class="paramname"><em>owner</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>fileName_i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&#160;</td>
- <td class="paramname"><em>lineNum_i</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2ad7f4e8ddfea01ab99d09ac74f8d4d0"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">yage::LogMessage::LogMessage </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;&#160;</td>
- <td class="paramname"><em>msg</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="af79ecd529e839a5a3e99077dde60df90"></a>
<div class="memitem">
@@ -370,67 +288,6 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="ae34f407242db5713632181b4ce9ae3d5"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::ostringstream yage::LogMessage::buffer_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a80b72c0e143b382538c347c201cbb4ee"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a> yage::LogMessage::meta_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad093f33360fc32ef014d215b0c1d4792"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classyage_1_1Logger.html">Logger</a>* yage::LogMessage::owner_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>yage/core/<a class="el" href="logmessage_8h_source.html">logmessage.h</a></li>
<li>yage/core/<a class="el" href="logmessage_8cpp.html">logmessage.cpp</a></li>
@@ -441,7 +298,7 @@ template&lt;typename T &gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1LogMessage.js b/classyage_1_1LogMessage.js
index 4d95a11c..5c1ddeaf 100644
--- a/classyage_1_1LogMessage.js
+++ b/classyage_1_1LogMessage.js
@@ -3,14 +3,9 @@ var classyage_1_1LogMessage =
[ "Meta", "structyage_1_1LogMessage_1_1Meta.html", "structyage_1_1LogMessage_1_1Meta" ],
[ "~LogMessage", "classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca", null ],
[ "LogMessage", "classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be", null ],
- [ "LogMessage", "classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f", null ],
- [ "LogMessage", "classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0", null ],
[ "operator<<", "classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90", null ],
[ "operator<<", "classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab", null ],
[ "operator=", "classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae", null ],
[ "operator=", "classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da", null ],
- [ "Logger", "classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a", null ],
- [ "buffer_", "classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5", null ],
- [ "meta_", "classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee", null ],
- [ "owner_", "classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792", null ]
+ [ "Logger", "classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1LogSink-members.html b/classyage_1_1LogSink-members.html
index 01eabe39..1b0bd671 100644
--- a/classyage_1_1LogSink-members.html
+++ b/classyage_1_1LogSink-members.html
@@ -119,14 +119,13 @@ $(document).ready(function(){initNavTree('classyage_1_1LogSink.html','');});
<tr><td class="entry"><a class="el" href="classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc">operator=</a>(const LogSink &amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356">operator=</a>(LogSink &amp;&amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9">operator==</a>(const LogSink &amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">wrapper_</a></td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a>(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const </td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a>(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const </td><td class="entry"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1LogSink.html b/classyage_1_1LogSink.html
index 0ffc049d..bd3626de 100644
--- a/classyage_1_1LogSink.html
+++ b/classyage_1_1LogSink.html
@@ -109,7 +109,6 @@ $(document).ready(function(){initNavTree('classyage_1_1LogSink.html','');});
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1LogSink-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::LogSink Class Reference</div> </div>
@@ -118,13 +117,6 @@ $(document).ready(function(){initNavTree('classyage_1_1LogSink.html','');});
<p><code>#include &lt;<a class="el" href="logsink_8h_source.html">logsink.h</a>&gt;</code></p>
<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html">Model</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab7b70959364771b105c0dffa0b64c38e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
@@ -142,11 +134,6 @@ Public Member Functions</h2></td></tr>
<tr class="separator:abe2e73398ecb925233b50be5d15e20f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac41716cf03dac6311cb7287c9edf8a8d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a> (const <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta, const std::string &amp;msg) const </td></tr>
<tr class="separator:ac41716cf03dac6311cb7287c9edf8a8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a63dfa11dc8cc1d885b61613e10332fdc"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">wrapper_</a></td></tr>
-<tr class="separator:a63dfa11dc8cc1d885b61613e10332fdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab7b70959364771b105c0dffa0b64c38e"></a>
@@ -274,27 +261,6 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a63dfa11dc8cc1d885b61613e10332fdc"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::unique_ptr&lt;<a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a>&gt; yage::LogSink::wrapper_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>yage/core/<a class="el" href="logsink_8h_source.html">logsink.h</a></li>
<li>yage/core/<a class="el" href="logsink_8cpp.html">logsink.cpp</a></li>
@@ -305,7 +271,7 @@ template&lt;typename T &gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1LogSink.html">LogSink</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1LogSink.js b/classyage_1_1LogSink.js
index 428ee503..f954cc67 100644
--- a/classyage_1_1LogSink.js
+++ b/classyage_1_1LogSink.js
@@ -1,13 +1,10 @@
var classyage_1_1LogSink =
[
- [ "Concept", "structyage_1_1LogSink_1_1Concept.html", "structyage_1_1LogSink_1_1Concept" ],
- [ "Model", "structyage_1_1LogSink_1_1Model.html", "structyage_1_1LogSink_1_1Model" ],
[ "LogSink", "classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e", null ],
[ "LogSink", "classyage_1_1LogSink.html#a8583ac57ebff98ab38c613c03b5bfbba", null ],
[ "LogSink", "classyage_1_1LogSink.html#aadebaf552b839879189965faf7b504cf", null ],
[ "operator=", "classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc", null ],
[ "operator=", "classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356", null ],
[ "operator==", "classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9", null ],
- [ "write", "classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d", null ],
- [ "wrapper_", "classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc", null ]
+ [ "write", "classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1Logger-members.html b/classyage_1_1Logger-members.html
index 40f2b405..3c45a7d8 100644
--- a/classyage_1_1Logger-members.html
+++ b/classyage_1_1Logger-members.html
@@ -113,21 +113,23 @@ $(document).ready(function(){initNavTree('classyage_1_1Logger.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1Logger.html">yage::Logger</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">active_</a></td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">add</a>(const LogSink &amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">clear</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">flush</a>(const LogMessage *msg)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">instance</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">operator()</a>(const std::string &amp;fileName, int lineNum)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">add</a>(const LogSink &amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">clear</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">flush</a>(const LogMessage *msg)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">instance</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>()</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352">Logger</a>(const std::string &amp;file_path)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b">Logger</a>(LogLevel min_level)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074">Logger</a>(LogLevel min_level, const std::string &amp;file_path)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">operator()</a>(LogLevel level=LogLevel::INFO, const std::string &amp;fileName=&quot;&quot;, int lineNum=-1)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245">remove</a>(const LogSink &amp;sink)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">sinks_</a></td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">setLevel</a>(LogLevel min_level)</td><td class="entry"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Logger.html b/classyage_1_1Logger.html
index 602db2e4..b1f14b1f 100644
--- a/classyage_1_1Logger.html
+++ b/classyage_1_1Logger.html
@@ -109,21 +109,30 @@ $(document).ready(function(){initNavTree('classyage_1_1Logger.html','');});
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1Logger-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::Logger Class Reference</div> </div>
</div><!--header-->
<div class="contents">
+<p><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+
+ <a href="classyage_1_1Logger.html#details">More...</a></p>
+
<p><code>#include &lt;<a class="el" href="logger_8h_source.html">logger.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a950c0c75b86bf330cf11a0ad29bd9a64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a> ()</td></tr>
<tr class="separator:a950c0c75b86bf330cf11a0ad29bd9a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a541278f8908daecb8d56d6da0a5642b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">operator()</a> (const std::string &amp;fileName, int lineNum)</td></tr>
-<tr class="separator:a541278f8908daecb8d56d6da0a5642b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d54590303257e9a8d1da26d59571352"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352">Logger</a> (const std::string &amp;file_path)</td></tr>
+<tr class="separator:a3d54590303257e9a8d1da26d59571352"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71f6ab0fa1e86d790553c0763a255b2b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b">Logger</a> (<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level)</td></tr>
+<tr class="separator:a71f6ab0fa1e86d790553c0763a255b2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acbd21a2da8b423e9f606c386cabac074"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074">Logger</a> (<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level, const std::string &amp;file_path)</td></tr>
+<tr class="separator:acbd21a2da8b423e9f606c386cabac074"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c7d6d1a9ccf0397dc81350cef6782f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">operator()</a> (<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> level=<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a>, const std::string &amp;fileName=&quot;&quot;, int lineNum=-1)</td></tr>
+<tr class="separator:a3c7d6d1a9ccf0397dc81350cef6782f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe5dc1d30d3fd2599a119455672d6e00"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">flush</a> (const <a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> *msg)</td></tr>
<tr class="separator:afe5dc1d30d3fd2599a119455672d6e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ec9a752e8cbb278342fdb49520fbcdd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">add</a> (const <a class="el" href="classyage_1_1LogSink.html">LogSink</a> &amp;sink)</td></tr>
@@ -132,23 +141,45 @@ Public Member Functions</h2></td></tr>
<tr class="separator:aac48688c66402e9bc63c4871641ab245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a036fcbfcb9d3428931ec5a11237501a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">clear</a> ()</td></tr>
<tr class="separator:a036fcbfcb9d3428931ec5a11237501a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ce5eb7eb1b108e38c1b90655999a8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">setLevel</a> (<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level)</td></tr>
+<tr class="separator:a2ce5eb7eb1b108e38c1b90655999a8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ad165738c5b738d80a14b0ee1319cae2e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classyage_1_1Logger.html">Logger</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">instance</a> ()</td></tr>
<tr class="separator:ad165738c5b738d80a14b0ee1319cae2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a4135a0742877aa36d52f1867bc4e7b1f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classyage_1_1LogSink.html">LogSink</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">sinks_</a></td></tr>
-<tr class="separator:a4135a0742877aa36d52f1867bc4e7b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a489f97b1b21ac425ebbdb063de068744"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classyage_1_1Active.html">Active</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">active_</a></td></tr>
-<tr class="separator:a489f97b1b21ac425ebbdb063de068744"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+<p>Aynchronous logging is built into the YAGE library, which can be used to log events in the game and also debug the game by using the debug output that the game engine produces. This can help if for example, a texture is being loaded.</p>
+<h3>Log levels</h3>
+<p>The logger has five different levels that can be assigned to a message. These are, from lowest to highest severity, <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">LogLevel::DEBUG</a></code>, <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a></code>, <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">LogLevel::WARNING</a></code>, <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">LogLevel::ERROR</a></code> and <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">LogLevel::FATAL</a></code>. Messages that the developer then wants to write to the logs can take any of these severities and the developer can then decide what the minimum severity is that the logger should log. By default, the logger will log anything that is above <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a></code>.</p>
+<h3>Using the <a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a> in your Game</h3>
+<p>There are a few preprocessor definitions to make the use of the logger as simple as possible. First of all, there is a definition to get the instance of the current global logger, which can then be used to set a different minimum display level. This definition is <code>yLogger</code>, and an example of how to use it to change the default output level can be seen below</p>
+<p>``` c++ yLogger.setLevel(yage::LogLevel::ERROR); ```</p>
+<p>The above code changes the global logger so that it will only output things that are an error or fatal and make the engine crash.</p>
+<p>Other preprocessor definitions are <code>yLogDebug</code>, <code>yLogInfo</code>, <code>yLogWarning</code>, <code>yLogError</code> and <code>yLogFatal</code>. These return an object that is similar to a buffer, but belongs to the main global logger <code>yLogger</code>. These are the definitions that should be used to print somehting to the main logger. For example</p>
+<p>``` c++ yLogWarning &lt;&lt; "This is a warning"; ```</p>
+<p>will print the message "This is a warning" with the severity of <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">LogLevel::WARNING</a></code>. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a950c0c75b86bf330cf11a0ad29bd9a64"></a>
<div class="memitem">
<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Logger::Logger </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3d54590303257e9a8d1da26d59571352"></a>
+<div class="memitem">
+<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -156,7 +187,32 @@ Private Attributes</h2></td></tr>
<tr>
<td class="memname">yage::Logger::Logger </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file_path</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a71f6ab0fa1e86d790553c0763a255b2b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Logger::Logger </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a>&#160;</td>
+ <td class="paramname"><em>min_level</em></td><td>)</td>
<td></td>
</tr>
</table>
@@ -169,6 +225,32 @@ Private Attributes</h2></td></tr>
</div>
</div>
+<a class="anchor" id="acbd21a2da8b423e9f606c386cabac074"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Logger::Logger </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a>&#160;</td>
+ <td class="paramname"><em>min_level</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file_path</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a5ec9a752e8cbb278342fdb49520fbcdd"></a>
<div class="memitem">
@@ -240,21 +322,27 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a541278f8908daecb8d56d6da0a5642b6"></a>
+<a class="anchor" id="a3c7d6d1a9ccf0397dc81350cef6782f2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a> yage::Logger::operator() </td>
<td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a>&#160;</td>
+ <td class="paramname"><em>level</em> = <code><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a></code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>fileName</em>, </td>
+ <td class="paramname"><em>fileName</em> = <code>&quot;&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>lineNum</em>&#160;</td>
+ <td class="paramname"><em>lineNum</em> = <code>-1</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -282,43 +370,18 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a489f97b1b21ac425ebbdb063de068744"></a>
+<a class="anchor" id="a2ce5eb7eb1b108e38c1b90655999a8eb"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">std::unique_ptr&lt;<a class="el" href="classyage_1_1Active.html">Active</a>&gt; yage::Logger::active_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4135a0742877aa36d52f1867bc4e7b1f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::vector&lt;<a class="el" href="classyage_1_1LogSink.html">LogSink</a>&gt; yage::Logger::sinks_</td>
+ <td class="memname">void yage::Logger::setLevel </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a>&#160;</td>
+ <td class="paramname"><em>min_level</em></td><td>)</td>
+ <td></td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
@@ -333,7 +396,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Logger.html">Logger</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Logger.js b/classyage_1_1Logger.js
index c1c49234..f673a3a9 100644
--- a/classyage_1_1Logger.js
+++ b/classyage_1_1Logger.js
@@ -1,12 +1,14 @@
var classyage_1_1Logger =
[
[ "Logger", "classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64", null ],
+ [ "Logger", "classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352", null ],
+ [ "Logger", "classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b", null ],
+ [ "Logger", "classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074", null ],
[ "add", "classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd", null ],
[ "clear", "classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8", null ],
[ "flush", "classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00", null ],
[ "instance", "classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e", null ],
- [ "operator()", "classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6", null ],
+ [ "operator()", "classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2", null ],
[ "remove", "classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245", null ],
- [ "active_", "classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744", null ],
- [ "sinks_", "classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f", null ]
+ [ "setLevel", "classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1Matrix-members.html b/classyage_1_1Matrix-members.html
index a554dc6f..8ba621f1 100644
--- a/classyage_1_1Matrix-members.html
+++ b/classyage_1_1Matrix-members.html
@@ -133,7 +133,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Matrix.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Matrix.html b/classyage_1_1Matrix.html
index 7fea61a8..5ac853bd 100644
--- a/classyage_1_1Matrix.html
+++ b/classyage_1_1Matrix.html
@@ -173,6 +173,7 @@ Friends</h2></td></tr>
<div class="textblock"><h3>template&lt;int Rows, int Cols, class Type&gt;<br/>
class yage::Matrix&lt; Rows, Cols, Type &gt;</h3>
+<p>Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes. </p>
<h1>Matrix Class </h1>
<p>The matrix class is a templated class which implements a mathematical Matrix.</p>
<h2>Usage Guide </h2>
@@ -206,6 +207,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</table>
</div><div class="memdoc">
+<p>Initializes the size of the data_ vector. </p>
+
</div>
</div>
<a class="anchor" id="a191b02ff353d04f18779d4c84e20927b"></a>
@@ -257,6 +260,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Iterator support for the start. </p>
<dl class="section return"><dt>Returns</dt><dd>Iterator pointing to the start of the data. </dd></dl>
</div>
@@ -284,6 +289,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</table>
</div><div class="memdoc">
+<p>Returns the column size of the <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a>. </p>
+
</div>
</div>
<a class="anchor" id="a20ea5fe16d27ef15f775b5497cadc851"></a>
@@ -308,6 +315,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Iterator support for the end. </p>
<dl class="section return"><dt>Returns</dt><dd>Iterator pointing to the end of the data. </dd></dl>
</div>
@@ -335,6 +344,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Get a specific column in a column vector. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">col</td><td>Column number to be returned. </td></tr>
@@ -368,6 +379,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Return the row specified row as a <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> with only one row. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">row</td><td>Row number to be returned. </td></tr>
@@ -505,6 +518,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</table>
</div><div class="memdoc">
+<p>Returns the row size of the <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a>. </p>
+
</div>
</div>
<a class="anchor" id="a07678d7007e89487c7168df84f2a4fa8"></a>
@@ -529,6 +544,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Prints out the matrix, but can also be implemented by other classes to print data differently. </p>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000001">Bug:</a></b></dt><dd>When printing certain matrices, it omits a row or column. Still need to determine under which conditions. </dd></dl>
<p>Reimplemented in <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; Rows, Type &gt;</a>, <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; 2, double &gt;</a>, <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; 4, Type &gt;</a>, <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; 3, Type &gt;</a>, and <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; 2, Type &gt;</a>.</p>
@@ -579,6 +596,8 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
</table>
</div><div class="memdoc">
+<p><a class="el" href="classyage_1_1Vector.html">Vector</a> containing the data of the matrix. </p>
+
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
@@ -590,7 +609,7 @@ template&lt;int Rows, int Cols, class Type&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Matrix.html">Matrix</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1ParticleBody-members.html b/classyage_1_1ParticleBody-members.html
index 7b07b8b6..8d1b507f 100644
--- a/classyage_1_1ParticleBody-members.html
+++ b/classyage_1_1ParticleBody-members.html
@@ -131,7 +131,7 @@ $(document).ready(function(){initNavTree('classyage_1_1ParticleBody.html','');})
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1ParticleBody.html b/classyage_1_1ParticleBody.html
index 5608e2cd..346f0f4f 100644
--- a/classyage_1_1ParticleBody.html
+++ b/classyage_1_1ParticleBody.html
@@ -263,7 +263,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1ParticleBody.html">ParticleBody</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogSink_1_1Concept-members.html b/classyage_1_1Rectangle-members.html
index feed7f20..da181efa 100644
--- a/structyage_1_1LogSink_1_1Concept-members.html
+++ b/classyage_1_1Rectangle-members.html
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Concept.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Rectangle.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -107,21 +107,21 @@ $(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Concept.html'
<div class="header">
<div class="headertitle">
-<div class="title">yage::LogSink::Concept Member List</div> </div>
+<div class="title">yage::Rectangle Member List</div> </div>
</div><!--header-->
<div class="contents">
-<p>This is the complete list of members for <a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classyage_1_1Rectangle.html">yage::Rectangle</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">clone</a>() const =0</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">write</a>(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const =0</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">~Concept</a>()=default</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a>(SpriteBatch &amp;sp)=0</td><td class="entry"><a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">Rectangle</a>(glm::vec4 position)</td><td class="entry"><a class="el" href="classyage_1_1Rectangle.html">yage::Rectangle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">render</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Rectangle.html">yage::Rectangle</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Glyph-members.html b/classyage_1_1Rectangle.html
index 81f55126..5061639c 100644
--- a/classyage_1_1Glyph-members.html
+++ b/classyage_1_1Rectangle.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: Member List</title>
+<title>YAGE: yage::Rectangle Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1Glyph.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Rectangle.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -106,32 +106,90 @@ $(document).ready(function(){initNavTree('classyage_1_1Glyph.html','');});
</div>
<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classyage_1_1Rectangle-members.html">List of all members</a> </div>
<div class="headertitle">
-<div class="title">yage::Glyph Member List</div> </div>
+<div class="title">yage::Rectangle Class Reference</div> </div>
</div><!--header-->
<div class="contents">
-<p>This is the complete list of members for <a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a>, including all inherited members.</p>
-<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">bottom_left</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">bottom_left_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">bottom_right</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">bottom_right_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">depth</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">depth_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">Glyph</a>(GLuint texture, float depth, const Vertex &amp;top_left, const Vertex &amp;top_right, const Vertex &amp;bottom_right, const Vertex &amp;bottom_left)</td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">texture</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">texture_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">top_left</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">top_left_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">top_right</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">top_right_</a></td><td class="entry"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
-</table></div><!-- contents -->
+<p><code>#include &lt;<a class="el" href="rectangle_8h_source.html">rectangle.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for yage::Rectangle:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classyage_1_1Rectangle.png" usemap="#yage::Rectangle_map" alt=""/>
+ <map id="yage::Rectangle_map" name="yage::Rectangle_map">
+<area href="classyage_1_1Shape.html" alt="yage::Shape" shape="rect" coords="0,56,102,80"/>
+<area href="classyage_1_1Drawable.html" alt="yage::Drawable" shape="rect" coords="0,0,102,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a45a3203b887ffcdb6a0bc7f5a4de717e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">Rectangle</a> (glm::vec4 position)</td></tr>
+<tr class="separator:a45a3203b887ffcdb6a0bc7f5a4de717e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9ff615160254c8289e502fac8124891"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">render</a> () const </td></tr>
+<tr class="separator:af9ff615160254c8289e502fac8124891"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classyage_1_1Drawable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classyage_1_1Drawable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td></tr>
+<tr class="memitem:abee95e68b5bffef86a35dafca296c45e inherit pub_methods_classyage_1_1Drawable"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a> (<a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;sp)=0</td></tr>
+<tr class="separator:abee95e68b5bffef86a35dafca296c45e inherit pub_methods_classyage_1_1Drawable"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a45a3203b887ffcdb6a0bc7f5a4de717e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Rectangle::Rectangle </td>
+ <td>(</td>
+ <td class="paramtype">glm::vec4&#160;</td>
+ <td class="paramname"><em>position</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="af9ff615160254c8289e502fac8124891"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void yage::Rectangle::render </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Reimplemented from <a class="el" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">yage::Shape</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>yage/render/<a class="el" href="rectangle_8h_source.html">rectangle.h</a></li>
+<li>yage/render/<a class="el" href="rectangle_8cpp.html">rectangle.cpp</a></li>
+</ul>
+</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Rectangle.html">Rectangle</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Rectangle.js b/classyage_1_1Rectangle.js
new file mode 100644
index 00000000..2781d91b
--- /dev/null
+++ b/classyage_1_1Rectangle.js
@@ -0,0 +1,5 @@
+var classyage_1_1Rectangle =
+[
+ [ "Rectangle", "classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e", null ],
+ [ "render", "classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891", null ]
+]; \ No newline at end of file
diff --git a/classyage_1_1Rectangle.png b/classyage_1_1Rectangle.png
new file mode 100644
index 00000000..66e49a59
--- /dev/null
+++ b/classyage_1_1Rectangle.png
Binary files differ
diff --git a/classyage_1_1RectangleCollider-members.html b/classyage_1_1RectangleCollider-members.html
index ad1ccdc1..559bc872 100644
--- a/classyage_1_1RectangleCollider-members.html
+++ b/classyage_1_1RectangleCollider-members.html
@@ -124,7 +124,7 @@ $(document).ready(function(){initNavTree('classyage_1_1RectangleCollider.html','
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1RectangleCollider.html b/classyage_1_1RectangleCollider.html
index 09a04809..717193f3 100644
--- a/classyage_1_1RectangleCollider.html
+++ b/classyage_1_1RectangleCollider.html
@@ -235,7 +235,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1RectangleCollider.html">RectangleCollider</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1RenderBatch.js b/classyage_1_1RenderBatch.js
deleted file mode 100644
index f74fcccd..00000000
--- a/classyage_1_1RenderBatch.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var classyage_1_1RenderBatch =
-[
- [ "RenderBatch", "classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853", null ],
- [ "num_vertices", "classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e", null ],
- [ "offset", "classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944", null ],
- [ "texture", "classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d", null ],
- [ "num_vertices_", "classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba", null ],
- [ "offset_", "classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7", null ],
- [ "SpriteBatch", "classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f", null ],
- [ "texture_", "classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160", null ]
-]; \ No newline at end of file
diff --git a/classyage_1_1ResourceManager-members.html b/classyage_1_1ResourceManager-members.html
index d00e7758..bf34d7e0 100644
--- a/classyage_1_1ResourceManager-members.html
+++ b/classyage_1_1ResourceManager-members.html
@@ -113,14 +113,13 @@ $(document).ready(function(){initNavTree('classyage_1_1ResourceManager.html','')
<p>This is the complete list of members for <a class="el" href="classyage_1_1ResourceManager.html">yage::ResourceManager</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">getTexture</a>(const std::string &amp;texture_path)</td><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html">yage::ResourceManager</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">texture_cache_</a></td><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html">yage::ResourceManager</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">getTexture</a>(const std::string &amp;texture_path, int x=1, int y=1)</td><td class="entry"><a class="el" href="classyage_1_1ResourceManager.html">yage::ResourceManager</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1ResourceManager.html b/classyage_1_1ResourceManager.html
index 226ddc10..5b5d2afd 100644
--- a/classyage_1_1ResourceManager.html
+++ b/classyage_1_1ResourceManager.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1ResourceManager.html','')
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="classyage_1_1ResourceManager-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::ResourceManager Class Reference</div> </div>
@@ -119,16 +118,11 @@ $(document).ready(function(){initNavTree('classyage_1_1ResourceManager.html','')
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a36d805924374f27aa7dbce1d47795b25"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">getTexture</a> (const std::string &amp;texture_path)</td></tr>
-<tr class="separator:a36d805924374f27aa7dbce1d47795b25"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
-Static Private Attributes</h2></td></tr>
-<tr class="memitem:a2799a8ff957874fbe7b7c791781255f6"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classyage_1_1TextureCache.html">TextureCache</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">texture_cache_</a></td></tr>
-<tr class="separator:a2799a8ff957874fbe7b7c791781255f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aec533f266d9b432050faed301f4191dc"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">getTexture</a> (const std::string &amp;texture_path, int x=1, int y=1)</td></tr>
+<tr class="separator:aec533f266d9b432050faed301f4191dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a36d805924374f27aa7dbce1d47795b25"></a>
+<a class="anchor" id="aec533f266d9b432050faed301f4191dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -139,34 +133,29 @@ Static Private Attributes</h2></td></tr>
<td class="memname"><a class="el" href="structyage_1_1Texture.html">Texture</a> yage::ResourceManager::getTexture </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>texture_path</em></td><td>)</td>
+ <td class="paramname"><em>texture_path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>x</em> = <code>1</code>, </td>
</tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a2799a8ff957874fbe7b7c791781255f6"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
<tr>
- <td class="memname"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a> yage::ResourceManager::texture_cache_</td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>y</em> = <code>1</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@@ -183,7 +172,7 @@ Static Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1ResourceManager.html">ResourceManager</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1ResourceManager.js b/classyage_1_1ResourceManager.js
index de7a672b..434fd832 100644
--- a/classyage_1_1ResourceManager.js
+++ b/classyage_1_1ResourceManager.js
@@ -1,5 +1,4 @@
var classyage_1_1ResourceManager =
[
- [ "getTexture", "classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25", null ],
- [ "texture_cache_", "classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6", null ]
+ [ "getTexture", "classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1RigidBody-members.html b/classyage_1_1RigidBody-members.html
index d3b81a09..71678f83 100644
--- a/classyage_1_1RigidBody-members.html
+++ b/classyage_1_1RigidBody-members.html
@@ -132,7 +132,7 @@ $(document).ready(function(){initNavTree('classyage_1_1RigidBody.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1RigidBody.html b/classyage_1_1RigidBody.html
index fa27146a..dd385138 100644
--- a/classyage_1_1RigidBody.html
+++ b/classyage_1_1RigidBody.html
@@ -214,7 +214,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1RigidBody.html">RigidBody</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1RenderBatch-members.html b/classyage_1_1Shader-members.html
index 1725daa3..8f04abab 100644
--- a/classyage_1_1RenderBatch-members.html
+++ b/classyage_1_1Shader-members.html
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1RenderBatch.html','');});
+$(document).ready(function(){initNavTree('classyage_1_1Shader.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -107,26 +107,28 @@ $(document).ready(function(){initNavTree('classyage_1_1RenderBatch.html','');});
<div class="header">
<div class="headertitle">
-<div class="title">yage::RenderBatch Member List</div> </div>
+<div class="title">yage::Shader Member List</div> </div>
</div><!--header-->
<div class="contents">
-<p>This is the complete list of members for <a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classyage_1_1Shader.html">yage::Shader</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">num_vertices</a>() const </td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">num_vertices_</a></td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">offset</a>() const </td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">offset_</a></td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">RenderBatch</a>(GLint offset, GLsizei num_vertices, GLuint texture)</td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">SpriteBatch</a></td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">texture</a>() const </td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">texture_</a></td><td class="entry"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">operator=</a>(const Shader &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05">operator=</a>(Shader &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">setUniform</a>(const std::string &amp;name, int value) const </td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab">setUniform</a>(const std::string &amp;name, float value) const </td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78">setUniform</a>(const std::string &amp;name, const glm::mat4 &amp;matrix) const </td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">Shader</a>(const std::string &amp;vertex_path, const std::string &amp;fragment_path)</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5">Shader</a>(const Shader &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2">Shader</a>(Shader &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">use</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">~Shader</a>()</td><td class="entry"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Shader.html b/classyage_1_1Shader.html
new file mode 100644
index 00000000..47b1c025
--- /dev/null
+++ b/classyage_1_1Shader.html
@@ -0,0 +1,397 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage::Shader Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classyage_1_1Shader.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classyage_1_1Shader-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">yage::Shader Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="shader_8h_source.html">shader.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a34fe30eb6e6d595c1996e8ea6fb3961a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">Shader</a> (const std::string &amp;vertex_path, const std::string &amp;fragment_path)</td></tr>
+<tr class="separator:a34fe30eb6e6d595c1996e8ea6fb3961a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a006dcb52a4fb9f1dc61df68d3676f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5">Shader</a> (const <a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;)=delete</td></tr>
+<tr class="separator:a1a006dcb52a4fb9f1dc61df68d3676f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adf6dc3a526921d62b55a552f38958dd2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2">Shader</a> (<a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;)=delete</td></tr>
+<tr class="separator:adf6dc3a526921d62b55a552f38958dd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9307c4f3cfaf5e584b70601294e09bdd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">~Shader</a> ()</td></tr>
+<tr class="separator:a9307c4f3cfaf5e584b70601294e09bdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5d966c327ae0749ca5758880b684103a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">operator=</a> (const <a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;)=delete</td></tr>
+<tr class="separator:a5d966c327ae0749ca5758880b684103a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af94e7c75abb18015ade6126465a5fe05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05">operator=</a> (<a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;)=delete</td></tr>
+<tr class="separator:af94e7c75abb18015ade6126465a5fe05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cd66c177f148ac0b619766188696e6c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">use</a> () const </td></tr>
+<tr class="memdesc:a8cd66c177f148ac0b619766188696e6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">compiles vertex and fragment shader <a href="#a8cd66c177f148ac0b619766188696e6c">More...</a><br/></td></tr>
+<tr class="separator:a8cd66c177f148ac0b619766188696e6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9bff8500e2adfa1745c843bc612f215"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">setUniform</a> (const std::string &amp;name, int value) const </td></tr>
+<tr class="memdesc:ac9bff8500e2adfa1745c843bc612f215"><td class="mdescLeft">&#160;</td><td class="mdescRight">set uniforms of different type <a href="#ac9bff8500e2adfa1745c843bc612f215">More...</a><br/></td></tr>
+<tr class="separator:ac9bff8500e2adfa1745c843bc612f215"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a637a37d3e72fe1cd53602e80ab23ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab">setUniform</a> (const std::string &amp;name, float value) const </td></tr>
+<tr class="separator:a1a637a37d3e72fe1cd53602e80ab23ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96c50a15f45d064f43d1f01e84105e78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78">setUniform</a> (const std::string &amp;name, const glm::mat4 &amp;matrix) const </td></tr>
+<tr class="separator:a96c50a15f45d064f43d1f01e84105e78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a34fe30eb6e6d595c1996e8ea6fb3961a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Shader::Shader </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>vertex_path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>fragment_path</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1a006dcb52a4fb9f1dc61df68d3676f5"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Shader::Shader </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">delete</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adf6dc3a526921d62b55a552f38958dd2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Shader::Shader </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">delete</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9307c4f3cfaf5e584b70601294e09bdd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">yage::Shader::~Shader </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>cleans up all the shaders and the program </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a5d966c327ae0749ca5758880b684103a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classyage_1_1Shader.html">Shader</a>&amp; yage::Shader::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">delete</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af94e7c75abb18015ade6126465a5fe05"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classyage_1_1Shader.html">Shader</a>&amp; yage::Shader::operator= </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">delete</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac9bff8500e2adfa1745c843bc612f215"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void yage::Shader::setUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>set uniforms of different type </p>
+
+</div>
+</div>
+<a class="anchor" id="a1a637a37d3e72fe1cd53602e80ab23ab"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void yage::Shader::setUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a96c50a15f45d064f43d1f01e84105e78"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void yage::Shader::setUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const glm::mat4 &amp;&#160;</td>
+ <td class="paramname"><em>matrix</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8cd66c177f148ac0b619766188696e6c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void yage::Shader::use </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>compiles vertex and fragment shader </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>yage/render/<a class="el" href="shader_8h_source.html">shader.h</a></li>
+<li>yage/render/<a class="el" href="shader_8cpp.html">shader.cpp</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Shader.html">Shader</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/classyage_1_1Shader.js b/classyage_1_1Shader.js
new file mode 100644
index 00000000..e622dd76
--- /dev/null
+++ b/classyage_1_1Shader.js
@@ -0,0 +1,13 @@
+var classyage_1_1Shader =
+[
+ [ "Shader", "classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a", null ],
+ [ "Shader", "classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5", null ],
+ [ "Shader", "classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2", null ],
+ [ "~Shader", "classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd", null ],
+ [ "operator=", "classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a", null ],
+ [ "operator=", "classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05", null ],
+ [ "setUniform", "classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215", null ],
+ [ "setUniform", "classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab", null ],
+ [ "setUniform", "classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78", null ],
+ [ "use", "classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c", null ]
+]; \ No newline at end of file
diff --git a/classyage_1_1Shape-members.html b/classyage_1_1Shape-members.html
new file mode 100644
index 00000000..03e3ee8d
--- /dev/null
+++ b/classyage_1_1Shape-members.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classyage_1_1Shape.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">yage::Shape Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classyage_1_1Shape.html">yage::Shape</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a>(SpriteBatch &amp;sp)=0</td><td class="entry"><a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">render</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Shape.html">yage::Shape</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/classyage_1_1Shape.html b/classyage_1_1Shape.html
new file mode 100644
index 00000000..2001e10d
--- /dev/null
+++ b/classyage_1_1Shape.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage::Shape Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classyage_1_1Shape.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classyage_1_1Shape-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">yage::Shape Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="shape_8h_source.html">shape.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for yage::Shape:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classyage_1_1Shape.png" usemap="#yage::Shape_map" alt=""/>
+ <map id="yage::Shape_map" name="yage::Shape_map">
+<area href="classyage_1_1Drawable.html" alt="yage::Drawable" shape="rect" coords="0,0,102,24"/>
+<area href="classyage_1_1Rectangle.html" alt="yage::Rectangle" shape="rect" coords="0,112,102,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab83fd121fe04debf98b42f29c919b539"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">render</a> () const </td></tr>
+<tr class="separator:ab83fd121fe04debf98b42f29c919b539"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classyage_1_1Drawable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classyage_1_1Drawable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td></tr>
+<tr class="memitem:abee95e68b5bffef86a35dafca296c45e inherit pub_methods_classyage_1_1Drawable"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a> (<a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;sp)=0</td></tr>
+<tr class="separator:abee95e68b5bffef86a35dafca296c45e inherit pub_methods_classyage_1_1Drawable"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ab83fd121fe04debf98b42f29c919b539"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void yage::Shape::render </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Reimplemented in <a class="el" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">yage::Rectangle</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>yage/render/<a class="el" href="shape_8h_source.html">shape.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Shape.html">Shape</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/classyage_1_1Shape.js b/classyage_1_1Shape.js
new file mode 100644
index 00000000..184d37cc
--- /dev/null
+++ b/classyage_1_1Shape.js
@@ -0,0 +1,4 @@
+var classyage_1_1Shape =
+[
+ [ "render", "classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539", null ]
+]; \ No newline at end of file
diff --git a/classyage_1_1Shape.png b/classyage_1_1Shape.png
new file mode 100644
index 00000000..03bbb1c3
--- /dev/null
+++ b/classyage_1_1Shape.png
Binary files differ
diff --git a/classyage_1_1Sprite-members.html b/classyage_1_1Sprite-members.html
index 99ecf3c9..05493745 100644
--- a/classyage_1_1Sprite-members.html
+++ b/classyage_1_1Sprite-members.html
@@ -114,25 +114,19 @@ $(document).ready(function(){initNavTree('classyage_1_1Sprite.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">draw</a>()</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">height_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">init</a>(float x, float y, float width, float height, const std::string &amp;texture_path)</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee">operator=</a>(const Sprite &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897">operator=</a>(Sprite &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">Sprite</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e">Sprite</a>(const Sprite &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1">Sprite</a>(Sprite &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">texture_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">vbo_id_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">width_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">x_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">y_</a></td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">init</a>(float x, float y, float width, float height, const std::string &amp;texture_path)</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee">operator=</a>(const Sprite &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897">operator=</a>(Sprite &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">Sprite</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e">Sprite</a>(const Sprite &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1">Sprite</a>(Sprite &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2">~Sprite</a>()</td><td class="entry"><a class="el" href="classyage_1_1Sprite.html">yage::Sprite</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Sprite.html b/classyage_1_1Sprite.html
index c7f7ae86..ec91fb19 100644
--- a/classyage_1_1Sprite.html
+++ b/classyage_1_1Sprite.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1Sprite.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1Sprite-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::Sprite Class Reference</div> </div>
@@ -135,21 +134,6 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2f6294be8b2551077cf475892bcddcc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8eed26f4fa57b3ad47d791564233ee40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">draw</a> ()</td></tr>
<tr class="separator:a8eed26f4fa57b3ad47d791564233ee40"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a6374eb3013ac9b87fa136f317dfb8d03"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">x_</a></td></tr>
-<tr class="separator:a6374eb3013ac9b87fa136f317dfb8d03"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a91e70bb6f123955cb3dd5e7932e9c3ed"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">y_</a></td></tr>
-<tr class="separator:a91e70bb6f123955cb3dd5e7932e9c3ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9699a12e74c0b78d3b4e396fed59b7a8"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">width_</a></td></tr>
-<tr class="separator:a9699a12e74c0b78d3b4e396fed59b7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abe6306d84f416b99ff3725ac6d9659d3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">height_</a></td></tr>
-<tr class="separator:abe6306d84f416b99ff3725ac6d9659d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0f48a2cd909000f719cde8dea33bf1ad"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">vbo_id_</a> = 0</td></tr>
-<tr class="separator:a0f48a2cd909000f719cde8dea33bf1ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac8f6505d7b080bb346458e6d70cc60d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">texture_</a></td></tr>
-<tr class="separator:ac8f6505d7b080bb346458e6d70cc60d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Use <a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> instead </dd></dl>
@@ -348,130 +332,9 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="abe6306d84f416b99ff3725ac6d9659d3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Sprite::height_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac8f6505d7b080bb346458e6d70cc60d0"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Texture.html">Texture</a> yage::Sprite::texture_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0f48a2cd909000f719cde8dea33bf1ad"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::Sprite::vbo_id_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9699a12e74c0b78d3b4e396fed59b7a8"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Sprite::width_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6374eb3013ac9b87fa136f317dfb8d03"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Sprite::x_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a91e70bb6f123955cb3dd5e7932e9c3ed"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">float yage::Sprite::y_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>yage/core/<a class="el" href="sprite_8h_source.html">sprite.h</a></li>
-<li>yage/core/<a class="el" href="sprite_8cpp.html">sprite.cpp</a></li>
+<li>yage/render/<a class="el" href="sprite_8h_source.html">sprite.h</a></li>
+<li>yage/render/<a class="el" href="sprite_8cpp.html">sprite.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -479,7 +342,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Sprite.html">Sprite</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Sprite.js b/classyage_1_1Sprite.js
index f14539f9..e259dffa 100644
--- a/classyage_1_1Sprite.js
+++ b/classyage_1_1Sprite.js
@@ -7,11 +7,5 @@ var classyage_1_1Sprite =
[ "draw", "classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40", null ],
[ "init", "classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1", null ],
[ "operator=", "classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee", null ],
- [ "operator=", "classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897", null ],
- [ "height_", "classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3", null ],
- [ "texture_", "classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0", null ],
- [ "vbo_id_", "classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad", null ],
- [ "width_", "classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8", null ],
- [ "x_", "classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03", null ],
- [ "y_", "classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed", null ]
+ [ "operator=", "classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1SpriteBatch-members.html b/classyage_1_1SpriteBatch-members.html
index 60d0aac1..b5671bb0 100644
--- a/classyage_1_1SpriteBatch-members.html
+++ b/classyage_1_1SpriteBatch-members.html
@@ -114,30 +114,22 @@ $(document).ready(function(){initNavTree('classyage_1_1SpriteBatch.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">begin</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">createRenderBatches</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">createVertexArray</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">draw</a>(const yage::Vector4f &amp;destination_rect, const yage::Vector4f &amp;uv_rect, GLuint texture, const Colour &amp;colour, float depth)</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">draw</a>(const glm::vec4 &amp;destination_rect, const glm::vec4 &amp;uv_rect, GLuint texture, const Colour &amp;colour, float depth)</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">end</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">glyph_ptrs_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">glyphs_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">NUM_VERTICES</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">operator=</a>(const SpriteBatch &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f">operator=</a>(SpriteBatch &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">render</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">render_batches_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">sortGlyphs</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652">SpriteBatch</a>(const SpriteBatch &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e">SpriteBatch</a>(SpriteBatch &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">vao_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">vbo_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a">~SpriteBatch</a>()</td><td class="entry"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SpriteBatch.html b/classyage_1_1SpriteBatch.html
index dac85bab..b2190118 100644
--- a/classyage_1_1SpriteBatch.html
+++ b/classyage_1_1SpriteBatch.html
@@ -109,8 +109,6 @@ $(document).ready(function(){initNavTree('classyage_1_1SpriteBatch.html','');});
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
-<a href="#pri-methods">Private Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1SpriteBatch-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::SpriteBatch Class Reference</div> </div>
@@ -137,8 +135,8 @@ Public Member Functions</h2></td></tr>
<tr class="separator:af6293aac69e1124199297e5b921a4872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8b705cdad7ceefa902f3be620ac8632"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">end</a> ()</td></tr>
<tr class="separator:af8b705cdad7ceefa902f3be620ac8632"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af06239e2779d49eb6e915980a0aac941"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">draw</a> (const <a class="el" href="namespaceyage.html#a1896ae5c4cfed1453dadf21a4a2a48cf">yage::Vector4f</a> &amp;destination_rect, const <a class="el" href="namespaceyage.html#a1896ae5c4cfed1453dadf21a4a2a48cf">yage::Vector4f</a> &amp;uv_rect, GLuint texture, const <a class="el" href="structyage_1_1Colour.html">Colour</a> &amp;colour, float depth)</td></tr>
-<tr class="separator:af06239e2779d49eb6e915980a0aac941"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acf88f98ccc7ce8effd2acfded27b6af0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">draw</a> (const glm::vec4 &amp;destination_rect, const glm::vec4 &amp;uv_rect, GLuint texture, const <a class="el" href="structyage_1_1Colour.html">Colour</a> &amp;colour, float depth)</td></tr>
+<tr class="separator:acf88f98ccc7ce8effd2acfded27b6af0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a195c4aca60815d413c65dce99389282d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">render</a> ()</td></tr>
<tr class="separator:a195c4aca60815d413c65dce99389282d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -146,28 +144,6 @@ Public Member Functions</h2></td></tr>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a6e01d11880a841b153e950aa8307b1a5"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">NUM_VERTICES</a> = 6</td></tr>
<tr class="separator:a6e01d11880a841b153e950aa8307b1a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
-Private Member Functions</h2></td></tr>
-<tr class="memitem:a4e21cc3bc27fbfaf1b6a15362b664027"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">createVertexArray</a> ()</td></tr>
-<tr class="separator:a4e21cc3bc27fbfaf1b6a15362b664027"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3e74abbf722aba0197b64d8f61d928c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">createRenderBatches</a> ()</td></tr>
-<tr class="separator:ae3e74abbf722aba0197b64d8f61d928c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adea6570f196b203a4d6e07ad66738c9a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">sortGlyphs</a> ()</td></tr>
-<tr class="separator:adea6570f196b203a4d6e07ad66738c9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a56e335f07826ca61ba680981d46b043c"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">vbo_</a> = 0</td></tr>
-<tr class="separator:a56e335f07826ca61ba680981d46b043c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a00a06cc5f4bd47c2d5003cf2e3d7a6c1"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">vao_</a> = 0</td></tr>
-<tr class="separator:a00a06cc5f4bd47c2d5003cf2e3d7a6c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0ca8f0d0df0eeb22e8fc6fceebb96200"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classyage_1_1Glyph.html">Glyph</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">glyphs_</a></td></tr>
-<tr class="separator:a0ca8f0d0df0eeb22e8fc6fceebb96200"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a007d24cd3765e2fcea843f85dbbb475e"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classyage_1_1Glyph.html">Glyph</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">glyph_ptrs_</a></td></tr>
-<tr class="separator:a007d24cd3765e2fcea843f85dbbb475e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf057ffe5fd9b7c35256dad147391008"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classyage_1_1RenderBatch.html">RenderBatch</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">render_batches_</a></td></tr>
-<tr class="separator:abf057ffe5fd9b7c35256dad147391008"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="afda50a8a2a6c9ffd1b9d962fae223f8a"></a>
@@ -264,66 +240,20 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ae3e74abbf722aba0197b64d8f61d928c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::SpriteBatch::createRenderBatches </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4e21cc3bc27fbfaf1b6a15362b664027"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::SpriteBatch::createVertexArray </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af06239e2779d49eb6e915980a0aac941"></a>
+<a class="anchor" id="acf88f98ccc7ce8effd2acfded27b6af0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void yage::SpriteBatch::draw </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="namespaceyage.html#a1896ae5c4cfed1453dadf21a4a2a48cf">yage::Vector4f</a> &amp;&#160;</td>
+ <td class="paramtype">const glm::vec4 &amp;&#160;</td>
<td class="paramname"><em>destination_rect</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">const <a class="el" href="namespaceyage.html#a1896ae5c4cfed1453dadf21a4a2a48cf">yage::Vector4f</a> &amp;&#160;</td>
+ <td class="paramtype">const glm::vec4 &amp;&#160;</td>
<td class="paramname"><em>uv_rect</em>, </td>
</tr>
<tr>
@@ -432,70 +362,7 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="adea6570f196b203a4d6e07ad66738c9a"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void yage::SpriteBatch::sortGlyphs </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a007d24cd3765e2fcea843f85dbbb475e"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::vector&lt;<a class="el" href="classyage_1_1Glyph.html">Glyph</a> *&gt; yage::SpriteBatch::glyph_ptrs_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0ca8f0d0df0eeb22e8fc6fceebb96200"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::vector&lt;<a class="el" href="classyage_1_1Glyph.html">Glyph</a>&gt; yage::SpriteBatch::glyphs_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="a6e01d11880a841b153e950aa8307b1a5"></a>
<div class="memitem">
<div class="memproto">
@@ -516,69 +383,9 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="abf057ffe5fd9b7c35256dad147391008"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::vector&lt;<a class="el" href="classyage_1_1RenderBatch.html">RenderBatch</a>&gt; yage::SpriteBatch::render_batches_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a00a06cc5f4bd47c2d5003cf2e3d7a6c1"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::SpriteBatch::vao_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a56e335f07826ca61ba680981d46b043c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLuint yage::SpriteBatch::vbo_ = 0</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>yage/core/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
-<li>yage/core/<a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
+<li>yage/render/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
+<li>yage/render/<a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -586,7 +393,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SpriteBatch.js b/classyage_1_1SpriteBatch.js
index 2af85fa4..c35d41df 100644
--- a/classyage_1_1SpriteBatch.js
+++ b/classyage_1_1SpriteBatch.js
@@ -5,18 +5,10 @@ var classyage_1_1SpriteBatch =
[ "SpriteBatch", "classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e", null ],
[ "~SpriteBatch", "classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a", null ],
[ "begin", "classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872", null ],
- [ "createRenderBatches", "classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c", null ],
- [ "createVertexArray", "classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027", null ],
- [ "draw", "classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941", null ],
+ [ "draw", "classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0", null ],
[ "end", "classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632", null ],
[ "operator=", "classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737", null ],
[ "operator=", "classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f", null ],
[ "render", "classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d", null ],
- [ "sortGlyphs", "classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a", null ],
- [ "glyph_ptrs_", "classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e", null ],
- [ "glyphs_", "classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200", null ],
- [ "NUM_VERTICES", "classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5", null ],
- [ "render_batches_", "classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008", null ],
- [ "vao_", "classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1", null ],
- [ "vbo_", "classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c", null ]
+ [ "NUM_VERTICES", "classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1SpriteSheet-members.html b/classyage_1_1SpriteSheet-members.html
index a5d3fe5e..9e18292b 100644
--- a/classyage_1_1SpriteSheet-members.html
+++ b/classyage_1_1SpriteSheet-members.html
@@ -114,17 +114,14 @@ $(document).ready(function(){initNavTree('classyage_1_1SpriteSheet.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9">fileContent</a>(std::string jsonFileName) const </td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">fileLocations_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">parseJson</a>(int &amp;width, int &amp;height, std::string jsonContent) const </td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0">sprite</a>(std::string spriteName) const </td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6">SpriteSheet</a>(std::string pngFileName, std::string jsonFileName)</td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">texture_</a></td><td class="entry"><a class="el" href="classyage_1_1SpriteSheet.html">yage::SpriteSheet</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SpriteSheet.html b/classyage_1_1SpriteSheet.html
index 783a2d68..10983887 100644
--- a/classyage_1_1SpriteSheet.html
+++ b/classyage_1_1SpriteSheet.html
@@ -108,8 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1SpriteSheet.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-methods">Private Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1SpriteSheet-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::SpriteSheet Class Reference</div> </div>
@@ -126,18 +124,6 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2734c2e7b8bdfc9090d240c070ee55c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50a04ebc989dbc63b0aa6d873da5ccd9"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9">fileContent</a> (std::string jsonFileName) const </td></tr>
<tr class="separator:a50a04ebc989dbc63b0aa6d873da5ccd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
-Private Member Functions</h2></td></tr>
-<tr class="memitem:ae012ec12cbc2fe09b08cfc38ce2e2a98"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">parseJson</a> (int &amp;width, int &amp;height, std::string jsonContent) const </td></tr>
-<tr class="separator:ae012ec12cbc2fe09b08cfc38ce2e2a98"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a8094499cceedc9cb3b15bfe0520db6b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">texture_</a></td></tr>
-<tr class="separator:a8094499cceedc9cb3b15bfe0520db6b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b8a3e6fd58943e44e04d6bfc8c243a3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">fileLocations_</a></td></tr>
-<tr class="separator:a8b8a3e6fd58943e44e04d6bfc8c243a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a73db999ab17c4846f036eb47470176f6"></a>
@@ -183,46 +169,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ae012ec12cbc2fe09b08cfc38ce2e2a98"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">SpriteMap yage::SpriteSheet::parseJson </td>
- <td>(</td>
- <td class="paramtype">int &amp;&#160;</td>
- <td class="paramname"><em>width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int &amp;&#160;</td>
- <td class="paramname"><em>height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string&#160;</td>
- <td class="paramname"><em>jsonContent</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="a2734c2e7b8bdfc9090d240c070ee55c0"></a>
<div class="memitem">
<div class="memproto">
@@ -239,47 +185,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a8b8a3e6fd58943e44e04d6bfc8c243a3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a> yage::SpriteSheet::fileLocations_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8094499cceedc9cb3b15bfe0520db6b8"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structyage_1_1Texture.html">Texture</a> yage::SpriteSheet::texture_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>yage/core/<a class="el" href="spritesheet_8h_source.html">spritesheet.h</a></li>
<li>yage/core/<a class="el" href="spritesheet_8cpp.html">spritesheet.cpp</a></li>
@@ -290,7 +195,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1SpriteSheet.html">SpriteSheet</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SpriteSheet.js b/classyage_1_1SpriteSheet.js
index 6d7b8f19..b1cf4ac0 100644
--- a/classyage_1_1SpriteSheet.js
+++ b/classyage_1_1SpriteSheet.js
@@ -2,8 +2,5 @@ var classyage_1_1SpriteSheet =
[
[ "SpriteSheet", "classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6", null ],
[ "fileContent", "classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9", null ],
- [ "parseJson", "classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98", null ],
- [ "sprite", "classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0", null ],
- [ "fileLocations_", "classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3", null ],
- [ "texture_", "classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8", null ]
+ [ "sprite", "classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1SyncQueue-members.html b/classyage_1_1SyncQueue-members.html
index a47875b0..12e24de5 100644
--- a/classyage_1_1SyncQueue-members.html
+++ b/classyage_1_1SyncQueue-members.html
@@ -113,22 +113,19 @@ $(document).ready(function(){initNavTree('classyage_1_1SyncQueue.html','');});
<p>This is the complete list of members for <a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">cond_</a></td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">mutex_</a></td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6">operator=</a>(const SyncQueue &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e">pop</a>()</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27">pop</a>(T &amp;item)</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1">push</a>(const T &amp;item)</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678">push</a>(T &amp;&amp;item)</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">queue_</a></td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b">SyncQueue</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c">SyncQueue</a>(const SyncQueue &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b">SyncQueue</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c">SyncQueue</a>(const SyncQueue &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue&lt; T &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SyncQueue.html b/classyage_1_1SyncQueue.html
index 139ee5de..a4a63be0 100644
--- a/classyage_1_1SyncQueue.html
+++ b/classyage_1_1SyncQueue.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1SyncQueue.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1SyncQueue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::SyncQueue&lt; T &gt; Class Template Reference</div> </div>
@@ -133,15 +132,6 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a4ef8940b49b9c1b7a213fd38847370b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c01a855e97a46449a97c76634ef7678"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678">push</a> (<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &amp;&amp;item)</td></tr>
<tr class="separator:a4c01a855e97a46449a97c76634ef7678"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:ae554585c8b44da0db79a0767c1b90968"><td class="memItemLeft" align="right" valign="top">std::queue&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">queue_</a></td></tr>
-<tr class="separator:ae554585c8b44da0db79a0767c1b90968"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a273dec7f58d6a727d32dcfc9b3c9622b"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">mutex_</a></td></tr>
-<tr class="separator:a273dec7f58d6a727d32dcfc9b3c9622b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af1682d934e8a71dad6718977240e83e4"><td class="memItemLeft" align="right" valign="top">std::condition_variable&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">cond_</a></td></tr>
-<tr class="separator:af1682d934e8a71dad6718977240e83e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0c8aa1c22e3e6d5094dbdeb88cff426b"></a>
@@ -293,73 +283,6 @@ template&lt;typename T&gt; </div>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="af1682d934e8a71dad6718977240e83e4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::condition_variable <a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::cond_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a273dec7f58d6a727d32dcfc9b3c9622b"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::mutex <a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::mutex_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae554585c8b44da0db79a0767c1b90968"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T&gt; </div>
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::queue&lt;<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>&gt; <a class="el" href="classyage_1_1SyncQueue.html">yage::SyncQueue</a>&lt; <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &gt;::queue_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>yage/util/<a class="el" href="syncqueue_8h_source.html">syncqueue.h</a></li>
</ul>
@@ -369,7 +292,7 @@ template&lt;typename T&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1SyncQueue.js b/classyage_1_1SyncQueue.js
index d917ece8..e616f0c7 100644
--- a/classyage_1_1SyncQueue.js
+++ b/classyage_1_1SyncQueue.js
@@ -6,8 +6,5 @@ var classyage_1_1SyncQueue =
[ "pop", "classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e", null ],
[ "pop", "classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27", null ],
[ "push", "classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1", null ],
- [ "push", "classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678", null ],
- [ "cond_", "classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4", null ],
- [ "mutex_", "classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b", null ],
- [ "queue_", "classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968", null ]
+ [ "push", "classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1TextureCache-members.html b/classyage_1_1TextureCache-members.html
index 437c33ec..723d011c 100644
--- a/classyage_1_1TextureCache-members.html
+++ b/classyage_1_1TextureCache-members.html
@@ -113,16 +113,15 @@ $(document).ready(function(){initNavTree('classyage_1_1TextureCache.html','');})
<p>This is the complete list of members for <a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">getTexture</a>(const std::string &amp;texture_path)</td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">getTexture</a>(const std::string &amp;texture_path, int x=1, int y=1)</td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">getTextureFromSpriteSheet</a>()</td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">texture_map_</a></td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">TextureCache</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">TextureCache</a>()=default</td><td class="entry"><a class="el" href="classyage_1_1TextureCache.html">yage::TextureCache</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1TextureCache.html b/classyage_1_1TextureCache.html
index 964cc8a2..25d3ad3f 100644
--- a/classyage_1_1TextureCache.html
+++ b/classyage_1_1TextureCache.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1TextureCache.html','');})
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1TextureCache-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::TextureCache Class Reference</div> </div>
@@ -121,16 +120,10 @@ $(document).ready(function(){initNavTree('classyage_1_1TextureCache.html','');})
Public Member Functions</h2></td></tr>
<tr class="memitem:a5f6af0bd513dd393061b2d9d18362692"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">TextureCache</a> ()=default</td></tr>
<tr class="separator:a5f6af0bd513dd393061b2d9d18362692"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acec85e497e3dbcded344f4bed6b4389e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">getTexture</a> (const std::string &amp;texture_path)</td></tr>
-<tr class="separator:acec85e497e3dbcded344f4bed6b4389e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4929640230f9a74fcd634416fe0974f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">getTexture</a> (const std::string &amp;texture_path, int x=1, int y=1)</td></tr>
+<tr class="separator:ad4929640230f9a74fcd634416fe0974f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb785ce35eb847c02de67dc9e6e06bcd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Texture.html">Texture</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">getTextureFromSpriteSheet</a> ()</td></tr>
<tr class="separator:abb785ce35eb847c02de67dc9e6e06bcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:aecd72d2dd02efb862548e4def6f6b323"><td class="memItemLeft" align="right" valign="top">std::unordered_map<br class="typebreak"/>
-&lt; std::string, <a class="el" href="structyage_1_1Texture.html">Texture</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">texture_map_</a></td></tr>
-<tr class="separator:aecd72d2dd02efb862548e4def6f6b323"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5f6af0bd513dd393061b2d9d18362692"></a>
@@ -157,7 +150,7 @@ Private Attributes</h2></td></tr>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="acec85e497e3dbcded344f4bed6b4389e"></a>
+<a class="anchor" id="ad4929640230f9a74fcd634416fe0974f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -165,8 +158,24 @@ Private Attributes</h2></td></tr>
<td class="memname"><a class="el" href="structyage_1_1Texture.html">Texture</a> yage::TextureCache::getTexture </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>texture_path</em></td><td>)</td>
+ <td class="paramname"><em>texture_path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>x</em> = <code>1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>y</em> = <code>1</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
@@ -188,27 +197,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="aecd72d2dd02efb862548e4def6f6b323"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">std::unordered_map&lt;std::string, <a class="el" href="structyage_1_1Texture.html">Texture</a>&gt; yage::TextureCache::texture_map_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>yage/core/<a class="el" href="texturecache_8h_source.html">texturecache.h</a></li>
<li>yage/core/<a class="el" href="texturecache_8cpp.html">texturecache.cpp</a></li>
@@ -219,7 +207,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1TextureCache.js b/classyage_1_1TextureCache.js
index b5d062ac..633a3443 100644
--- a/classyage_1_1TextureCache.js
+++ b/classyage_1_1TextureCache.js
@@ -1,7 +1,6 @@
var classyage_1_1TextureCache =
[
[ "TextureCache", "classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692", null ],
- [ "getTexture", "classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e", null ],
- [ "getTextureFromSpriteSheet", "classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd", null ],
- [ "texture_map_", "classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323", null ]
+ [ "getTexture", "classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f", null ],
+ [ "getTextureFromSpriteSheet", "classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1Vector-members.html b/classyage_1_1Vector-members.html
index 3979c3a9..42cc3e28 100644
--- a/classyage_1_1Vector-members.html
+++ b/classyage_1_1Vector-members.html
@@ -135,7 +135,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Vector.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector.html b/classyage_1_1Vector.html
index 6ea8adba..1cc66c1e 100644
--- a/classyage_1_1Vector.html
+++ b/classyage_1_1Vector.html
@@ -333,6 +333,8 @@ template&lt;int Rows = 2, class Type = double&gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Prints out the matrix, but can also be implemented by other classes to print data differently. </p>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000001">Bug:</a></b></dt><dd>When printing certain matrices, it omits a row or column. Still need to determine under which conditions. </dd></dl>
<p>Reimplemented from <a class="el" href="classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8">yage::Matrix&lt; Rows, 1, Type &gt;</a>.</p>
@@ -348,7 +350,7 @@ template&lt;int Rows = 2, class Type = double&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Vector.html">Vector</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector2-members.html b/classyage_1_1Vector2-members.html
index f99f1dcf..6262feed 100644
--- a/classyage_1_1Vector2-members.html
+++ b/classyage_1_1Vector2-members.html
@@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Vector2.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector2.html b/classyage_1_1Vector2.html
index a1a22c59..ef0667e3 100644
--- a/classyage_1_1Vector2.html
+++ b/classyage_1_1Vector2.html
@@ -205,6 +205,7 @@ Additional Inherited Members</h2></td></tr>
<div class="textblock"><h3>template&lt;typename Type = double&gt;<br/>
class yage::Vector2&lt; Type &gt;</h3>
+<p>2D <a class="el" href="classyage_1_1Vector.html">Vector</a> class. </p>
<p>Two dimensional vector class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a50c108903be424de1c41ce31fddd23ea"></a>
@@ -430,7 +431,7 @@ template&lt;typename Type = double&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Vector2.html">Vector2</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector3-members.html b/classyage_1_1Vector3-members.html
index c761d831..6ebdc0b2 100644
--- a/classyage_1_1Vector3-members.html
+++ b/classyage_1_1Vector3-members.html
@@ -144,7 +144,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Vector3.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector3.html b/classyage_1_1Vector3.html
index 5adf5352..8ba326d8 100644
--- a/classyage_1_1Vector3.html
+++ b/classyage_1_1Vector3.html
@@ -211,6 +211,7 @@ Additional Inherited Members</h2></td></tr>
<div class="textblock"><h3>template&lt;typename Type = double&gt;<br/>
class yage::Vector3&lt; Type &gt;</h3>
+<p>3D <a class="el" href="classyage_1_1Vector.html">Vector</a> class. </p>
<p>Two dimensional vector class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a745b76ba3e49f5c73f53cb065ddf337b"></a>
@@ -421,7 +422,7 @@ template&lt;typename Type = double&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Vector3.html">Vector3</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector4-members.html b/classyage_1_1Vector4-members.html
index 52473d53..dee2243e 100644
--- a/classyage_1_1Vector4-members.html
+++ b/classyage_1_1Vector4-members.html
@@ -146,7 +146,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Vector4.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Vector4.html b/classyage_1_1Vector4.html
index 4c16a24a..4b0b5602 100644
--- a/classyage_1_1Vector4.html
+++ b/classyage_1_1Vector4.html
@@ -116,7 +116,7 @@ $(document).ready(function(){initNavTree('classyage_1_1Vector4.html','');});
<div class="contents">
<p>4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class
-</p>
+ <a href="classyage_1_1Vector4.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="matrix_8h_source.html">matrix.h</a>&gt;</code></p>
<div class="dynheader">
@@ -211,7 +211,12 @@ Additional Inherited Members</h2></td></tr>
<tr class="memdesc:a0ab11922319366f6e74f6e9e7d7abeed inherit pro_attribs_classyage_1_1Matrix"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector containing the data of the matrix. <a href="#a0ab11922319366f6e74f6e9e7d7abeed">More...</a><br/></td></tr>
<tr class="separator:a0ab11922319366f6e74f6e9e7d7abeed inherit pro_attribs_classyage_1_1Matrix"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template&lt;typename Type = double&gt;<br/>
+class yage::Vector4&lt; Type &gt;</h3>
+
+<p>4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab6e8f6e88c13d3bbfa1a6591d97b7d03"></a>
<div class="memitem">
<div class="memproto">
@@ -458,7 +463,7 @@ template&lt;typename Type = double&gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Vector4.html">Vector4</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Window-members.html b/classyage_1_1Window-members.html
index 633b1f9c..61d8ec6b 100644
--- a/classyage_1_1Window-members.html
+++ b/classyage_1_1Window-members.html
@@ -116,23 +116,23 @@ $(document).ready(function(){initNavTree('classyage_1_1Window.html','');});
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">clearBuffer</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">create</a>(std::string window_name, int width, int height)</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">hide</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(const Window &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de">operator=</a>(Window &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">pollEvents</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">shouldClose</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">show</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">swapBuffer</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf">Window</a>(const Window &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821">Window</a>(Window &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">window_</a></td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">keyPressed</a>(key k)</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(const Window &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de">operator=</a>(Window &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">pollEvents</a>() const </td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">shouldClose</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">show</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">swapBuffer</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf">Window</a>(const Window &amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821">Window</a>(Window &amp;&amp;)=delete</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0">~Window</a>()</td><td class="entry"><a class="el" href="classyage_1_1Window.html">yage::Window</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Window.html b/classyage_1_1Window.html
index d5546117..c2988f4e 100644
--- a/classyage_1_1Window.html
+++ b/classyage_1_1Window.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1Window.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1Window-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::Window Class Reference</div> </div>
@@ -151,12 +150,8 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a5e3b209289bc343609d809d5b7f23cc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a311e27b1e588f0fce540ce040dcbd5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">pollEvents</a> () const </td></tr>
<tr class="separator:a1a311e27b1e588f0fce540ce040dcbd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a7b09e6b3e575a40b99bfb7c685432787"><td class="memItemLeft" align="right" valign="top">GLFWwindow *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">window_</a> = nullptr</td></tr>
-<tr class="memdesc:a7b09e6b3e575a40b99bfb7c685432787"><td class="mdescLeft">&#160;</td><td class="mdescRight">window handle <a href="#a7b09e6b3e575a40b99bfb7c685432787">More...</a><br/></td></tr>
-<tr class="separator:a7b09e6b3e575a40b99bfb7c685432787"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae95d8670801c04af43da9e4fcc0e1006"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">keyPressed</a> (<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a> k)</td></tr>
+<tr class="separator:ae95d8670801c04af43da9e4fcc0e1006"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a7d7bd2f22e095df387e8b5cda2bb484e"></a>
@@ -243,6 +238,8 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>destroys the window handle </p>
+
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
@@ -259,6 +256,8 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>clear buffer </p>
+
</div>
</div>
<a class="anchor" id="afdf3e2826526abc23a4e206c9a8a8745"></a>
@@ -291,6 +290,8 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>create the window, initialize the handle and update the width and height </p>
+
</div>
</div>
<a class="anchor" id="aa421df451f166dfe6441562e92b99115"></a>
@@ -306,6 +307,24 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>hide windowProc </p>
+
+</div>
+</div>
+<a class="anchor" id="ae95d8670801c04af43da9e4fcc0e1006"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool yage::Window::keyPressed </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a>&#160;</td>
+ <td class="paramname"><em>k</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
</div>
</div>
<a class="anchor" id="a5247a4164bf0006fe9f034cd27c5b6db"></a>
@@ -399,6 +418,8 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>show window </p>
+
</div>
</div>
<a class="anchor" id="a86d0aa8e9896850b9acfc720b5615359"></a>
@@ -414,26 +435,7 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a7b09e6b3e575a40b99bfb7c685432787"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">GLFWwindow* yage::Window::window_ = nullptr</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
+<p>swap the buffer </p>
</div>
</div>
@@ -447,7 +449,7 @@ Private Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1Window.html">Window</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1Window.js b/classyage_1_1Window.js
index 49b62bb5..a4df96c8 100644
--- a/classyage_1_1Window.js
+++ b/classyage_1_1Window.js
@@ -7,11 +7,11 @@ var classyage_1_1Window =
[ "clearBuffer", "classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58", null ],
[ "create", "classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745", null ],
[ "hide", "classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115", null ],
+ [ "keyPressed", "classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006", null ],
[ "operator=", "classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db", null ],
[ "operator=", "classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de", null ],
[ "pollEvents", "classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5", null ],
[ "shouldClose", "classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8", null ],
[ "show", "classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34", null ],
- [ "swapBuffer", "classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359", null ],
- [ "window_", "classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787", null ]
+ [ "swapBuffer", "classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359", null ]
]; \ No newline at end of file
diff --git a/classyage_1_1details_1_1Row-members.html b/classyage_1_1details_1_1Row-members.html
index 6cc6c4e9..25a07455 100644
--- a/classyage_1_1details_1_1Row-members.html
+++ b/classyage_1_1details_1_1Row-members.html
@@ -113,17 +113,15 @@ $(document).ready(function(){initNavTree('classyage_1_1details_1_1Row.html','');
<p>This is the complete list of members for <a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a></td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190">operator[]</a>(int col)</td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736">operator[]</a>(int col) const </td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a></td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190">operator[]</a>(int col)</td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736">operator[]</a>(int col) const </td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06">Row</a>(Matrix&lt; Rows, Cols, Type &gt; *parent, int index)</td><td class="entry"><a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1details_1_1Row.html b/classyage_1_1details_1_1Row.html
index 02bc6290..8cee52ba 100644
--- a/classyage_1_1details_1_1Row.html
+++ b/classyage_1_1details_1_1Row.html
@@ -108,7 +108,6 @@ $(document).ready(function(){initNavTree('classyage_1_1details_1_1Row.html','');
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classyage_1_1details_1_1Row-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">yage::details::Row&lt; Rows, Cols, Type &gt; Class Template Reference</div> </div>
@@ -125,13 +124,6 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a703d4eee36d93b1227ad734bdcf27190"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf2f7047871fdc78ba66d9d08cd07736"><td class="memItemLeft" align="right" valign="top">const Type &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736">operator[]</a> (int col) const </td></tr>
<tr class="separator:adf2f7047871fdc78ba66d9d08cd07736"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a9c781b74460f4cb429de8838f74857d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1Matrix.html">Matrix</a>&lt; Rows, Cols, Type &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a></td></tr>
-<tr class="separator:a9c781b74460f4cb429de8838f74857d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a438164456acdb9e20c3e13ef9e43d5b3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a></td></tr>
-<tr class="separator:a438164456acdb9e20c3e13ef9e43d5b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a18904acbce1c6084bc25a753989b5f06"></a>
@@ -223,51 +215,6 @@ template&lt;int Rows, int Cols, class Type &gt; </div>
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a438164456acdb9e20c3e13ef9e43d5b3"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;int Rows, int Cols, class Type &gt; </div>
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row</a>&lt; Rows, Cols, Type &gt;::index_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9c781b74460f4cb429de8838f74857d8"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;int Rows, int Cols, class Type &gt; </div>
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classyage_1_1Matrix.html">Matrix</a>&lt;Rows, Cols, Type&gt;* <a class="el" href="classyage_1_1details_1_1Row.html">yage::details::Row</a>&lt; Rows, Cols, Type &gt;::parent_</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>yage/math/<a class="el" href="matrix_8h_source.html">matrix.h</a></li>
</ul>
@@ -277,7 +224,7 @@ template&lt;int Rows, int Cols, class Type &gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1details.html">details</a></li><li class="navelem"><a class="el" href="classyage_1_1details_1_1Row.html">Row</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/classyage_1_1details_1_1Row.js b/classyage_1_1details_1_1Row.js
index 9d0b2b06..35437654 100644
--- a/classyage_1_1details_1_1Row.js
+++ b/classyage_1_1details_1_1Row.js
@@ -2,7 +2,5 @@ var classyage_1_1details_1_1Row =
[
[ "Row", "classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06", null ],
[ "operator[]", "classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190", null ],
- [ "operator[]", "classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736", null ],
- [ "index_", "classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3", null ],
- [ "parent_", "classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8", null ]
+ [ "operator[]", "classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736", null ]
]; \ No newline at end of file
diff --git a/collider_8h.html b/collider_8h.html
index b3331af2..568ccb62 100644
--- a/collider_8h.html
+++ b/collider_8h.html
@@ -131,7 +131,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -139,7 +140,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="collider_8h.html">collider.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/collider_8h_source.html b/collider_8h_source.html
index f913c413..abd9ecb8 100644
--- a/collider_8h_source.html
+++ b/collider_8h_source.html
@@ -156,7 +156,7 @@ $(document).ready(function(){initNavTree('collider_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="collider_8h.html">collider.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/collisionbody_8h.html b/collisionbody_8h.html
index 6e277bb1..2980e9a6 100644
--- a/collisionbody_8h.html
+++ b/collisionbody_8h.html
@@ -131,7 +131,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -139,7 +140,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="collisionbody_8h.html">collisionbody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/collisionbody_8h_source.html b/collisionbody_8h_source.html
index 7982f861..b6ee544c 100644
--- a/collisionbody_8h_source.html
+++ b/collisionbody_8h_source.html
@@ -140,7 +140,7 @@ $(document).ready(function(){initNavTree('collisionbody_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="collisionbody_8h.html">collisionbody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/deprecated.html b/deprecated.html
index 92d75944..fa3f1534 100644
--- a/deprecated.html
+++ b/deprecated.html
@@ -111,7 +111,7 @@ $(document).ready(function(){initNavTree('deprecated.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_059f34b87ae2c2af887b23a7e5e8e88f.html b/dir_059f34b87ae2c2af887b23a7e5e8e88f.html
new file mode 100644
index 00000000..c38d6ceb
--- /dev/null
+++ b/dir_059f34b87ae2c2af887b23a7e5e8e88f.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_059f34b87ae2c2af887b23a7e5e8e88f.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">render Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:batch_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="batch_8h.html">batch.h</a> <a href="batch_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:drawable_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drawable_8h.html">drawable.h</a> <a href="drawable_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ellipse_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ellipse_8h.html">ellipse.h</a> <a href="ellipse_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:rectangle_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rectangle_8cpp.html">rectangle.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:rectangle_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rectangle_8h.html">rectangle.h</a> <a href="rectangle_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:shader_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="shader_8cpp.html">shader.cpp</a></td></tr>
+<tr class="memdesc:shader_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:shader_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="shader_8h.html">shader.h</a> <a href="shader_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:shader_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:shape_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="shape_8h.html">shape.h</a> <a href="shape_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:sprite_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sprite_8cpp.html">sprite.cpp</a></td></tr>
+<tr class="memdesc:sprite_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:sprite_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sprite_8h.html">sprite.h</a> <a href="sprite_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:sprite_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:spritebatch_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></td></tr>
+<tr class="memdesc:spritebatch_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:spritebatch_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spritebatch_8h.html">spritebatch.h</a> <a href="spritebatch_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:spritebatch_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/dir_059f34b87ae2c2af887b23a7e5e8e88f.js b/dir_059f34b87ae2c2af887b23a7e5e8e88f.js
new file mode 100644
index 00000000..1e784721
--- /dev/null
+++ b/dir_059f34b87ae2c2af887b23a7e5e8e88f.js
@@ -0,0 +1,31 @@
+var dir_059f34b87ae2c2af887b23a7e5e8e88f =
+[
+ [ "batch.h", "batch_8h.html", [
+ [ "Batch", "classyage_1_1Batch.html", "classyage_1_1Batch" ]
+ ] ],
+ [ "drawable.h", "drawable_8h.html", [
+ [ "Drawable", "classyage_1_1Drawable.html", "classyage_1_1Drawable" ]
+ ] ],
+ [ "ellipse.h", "ellipse_8h.html", null ],
+ [ "rectangle.cpp", "rectangle_8cpp.html", null ],
+ [ "rectangle.h", "rectangle_8h.html", [
+ [ "Rectangle", "classyage_1_1Rectangle.html", "classyage_1_1Rectangle" ]
+ ] ],
+ [ "shader.cpp", "shader_8cpp.html", null ],
+ [ "shader.h", "shader_8h.html", [
+ [ "Shader", "classyage_1_1Shader.html", "classyage_1_1Shader" ]
+ ] ],
+ [ "shape.h", "shape_8h.html", [
+ [ "Shape", "classyage_1_1Shape.html", "classyage_1_1Shape" ]
+ ] ],
+ [ "sprite.cpp", "sprite_8cpp.html", null ],
+ [ "sprite.h", "sprite_8h.html", [
+ [ "Sprite", "classyage_1_1Sprite.html", "classyage_1_1Sprite" ]
+ ] ],
+ [ "spritebatch.cpp", "spritebatch_8cpp.html", null ],
+ [ "spritebatch.h", "spritebatch_8h.html", [
+ [ "RenderBatch", "structyage_1_1details_1_1RenderBatch.html", "structyage_1_1details_1_1RenderBatch" ],
+ [ "Glyph", "structyage_1_1details_1_1Glyph.html", "structyage_1_1details_1_1Glyph" ],
+ [ "SpriteBatch", "classyage_1_1SpriteBatch.html", "classyage_1_1SpriteBatch" ]
+ ] ]
+]; \ No newline at end of file
diff --git a/dir_0a5be4b85c8e2c05f7a9f5a803f53125.html b/dir_0a5be4b85c8e2c05f7a9f5a803f53125.html
index d45224aa..eee4a4be 100644
--- a/dir_0a5be4b85c8e2c05f7a9f5a803f53125.html
+++ b/dir_0a5be4b85c8e2c05f7a9f5a803f53125.html
@@ -107,10 +107,14 @@ $(document).ready(function(){initNavTree('dir_0a5be4b85c8e2c05f7a9f5a803f53125.h
Directories</h2></td></tr>
<tr class="memitem:dir_11841e5da2063fc5766a682aee38e289"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_d09e80fdcf0bb585bbe3b7099c52d028"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_aa7f86daaaa64c448f636c0e65de2cec"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html">math</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_a58d7658bbcfd3d3d7296185ebe55c28"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_059f34b87ae2c2af887b23a7e5e8e88f"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_48a91ae829881cbedcfc124d2027890d"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -131,7 +135,7 @@ Files</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_0a5be4b85c8e2c05f7a9f5a803f53125.js b/dir_0a5be4b85c8e2c05f7a9f5a803f53125.js
index 718705cd..e14ab1ef 100644
--- a/dir_0a5be4b85c8e2c05f7a9f5a803f53125.js
+++ b/dir_0a5be4b85c8e2c05f7a9f5a803f53125.js
@@ -1,8 +1,10 @@
var dir_0a5be4b85c8e2c05f7a9f5a803f53125 =
[
[ "core", "dir_11841e5da2063fc5766a682aee38e289.html", "dir_11841e5da2063fc5766a682aee38e289" ],
+ [ "data", "dir_d09e80fdcf0bb585bbe3b7099c52d028.html", "dir_d09e80fdcf0bb585bbe3b7099c52d028" ],
[ "math", "dir_aa7f86daaaa64c448f636c0e65de2cec.html", "dir_aa7f86daaaa64c448f636c0e65de2cec" ],
[ "physics", "dir_a58d7658bbcfd3d3d7296185ebe55c28.html", "dir_a58d7658bbcfd3d3d7296185ebe55c28" ],
+ [ "render", "dir_059f34b87ae2c2af887b23a7e5e8e88f.html", "dir_059f34b87ae2c2af887b23a7e5e8e88f" ],
[ "util", "dir_48a91ae829881cbedcfc124d2027890d.html", "dir_48a91ae829881cbedcfc124d2027890d" ],
[ "yage.cpp", "yage_8cpp.html", "yage_8cpp" ],
[ "yage.h", "yage_8h.html", "yage_8h" ]
diff --git a/dir_11841e5da2063fc5766a682aee38e289.html b/dir_11841e5da2063fc5766a682aee38e289.html
index d1b09080..0eee2436 100644
--- a/dir_11841e5da2063fc5766a682aee38e289.html
+++ b/dir_11841e5da2063fc5766a682aee38e289.html
@@ -113,14 +113,6 @@ Files</h2></td></tr>
<tr class="memdesc:camera_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:glslprogram_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glslprogram_8cpp.html">glslprogram.cpp</a></td></tr>
-<tr class="memdesc:glslprogram_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:glslprogram_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glslprogram_8h.html">glslprogram.h</a> <a href="glslprogram_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:glslprogram_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:imageloader_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="imageloader_8cpp.html">imageloader.cpp</a></td></tr>
<tr class="memdesc:imageloader_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
@@ -129,10 +121,6 @@ Files</h2></td></tr>
<tr class="memdesc:imageloader_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:input_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="input_8h.html">input.h</a> <a href="input_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:input_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:iomanager_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="iomanager_8cpp.html">iomanager.cpp</a></td></tr>
<tr class="memdesc:iomanager_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
@@ -169,12 +157,6 @@ Files</h2></td></tr>
<tr class="memdesc:logsink_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:picopng_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="picopng_8cpp.html">picopng.cpp</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:picopng_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="picopng_8h.html">picopng.h</a> <a href="picopng_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:picopng_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:resourcemanager_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="resourcemanager_8cpp.html">resourcemanager.cpp</a></td></tr>
<tr class="memdesc:resourcemanager_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
@@ -183,22 +165,6 @@ Files</h2></td></tr>
<tr class="memdesc:resourcemanager_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:sprite_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sprite_8cpp.html">sprite.cpp</a></td></tr>
-<tr class="memdesc:sprite_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:sprite_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sprite_8h.html">sprite.h</a> <a href="sprite_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:sprite_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:spritebatch_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></td></tr>
-<tr class="memdesc:spritebatch_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:spritebatch_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spritebatch_8h.html">spritebatch.h</a> <a href="spritebatch_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:spritebatch_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:spritesheet_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spritesheet_8cpp.html">spritesheet.cpp</a></td></tr>
<tr class="memdesc:spritesheet_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
@@ -207,9 +173,9 @@ Files</h2></td></tr>
<tr class="memdesc:spritesheet_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:texture_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="texture_8h.html">texture.h</a> <a href="texture_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:texture_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
+<tr class="memitem:stb__image_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8cpp.html">stb_image.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:stb__image_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html">stb_image.h</a> <a href="stb__image_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:texturecache_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="texturecache_8cpp.html">texturecache.cpp</a></td></tr>
<tr class="memdesc:texturecache_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
@@ -219,10 +185,6 @@ Files</h2></td></tr>
<tr class="memdesc:texturecache_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:vertex_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vertex_8h.html">vertex.h</a> <a href="vertex_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:vertex_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
- <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:window_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="window_8cpp.html">window.cpp</a></td></tr>
<tr class="memdesc:window_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
<br/></td></tr>
@@ -238,7 +200,7 @@ Files</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_11841e5da2063fc5766a682aee38e289.js b/dir_11841e5da2063fc5766a682aee38e289.js
index 8ef18e5e..2ed33b81 100644
--- a/dir_11841e5da2063fc5766a682aee38e289.js
+++ b/dir_11841e5da2063fc5766a682aee38e289.js
@@ -4,24 +4,17 @@ var dir_11841e5da2063fc5766a682aee38e289 =
[ "camera.h", "camera_8h.html", [
[ "Camera", "classyage_1_1Camera.html", "classyage_1_1Camera" ]
] ],
- [ "glslprogram.cpp", "glslprogram_8cpp.html", null ],
- [ "glslprogram.h", "glslprogram_8h.html", [
- [ "GlslProgram", "classyage_1_1GlslProgram.html", "classyage_1_1GlslProgram" ]
- ] ],
[ "imageloader.cpp", "imageloader_8cpp.html", null ],
[ "imageloader.h", "imageloader_8h.html", [
[ "ImageLoader", "classyage_1_1ImageLoader.html", "classyage_1_1ImageLoader" ]
] ],
- [ "input.h", "input_8h.html", "input_8h" ],
[ "iomanager.cpp", "iomanager_8cpp.html", null ],
[ "iomanager.h", "iomanager_8h.html", [
[ "IoManager", "classyage_1_1IoManager.html", "classyage_1_1IoManager" ]
] ],
[ "logger.cpp", "logger_8cpp.html", null ],
[ "logger.h", "logger_8h.html", "logger_8h" ],
- [ "loglevel.h", "loglevel_8h.html", [
- [ "LogLevel", "classLogLevel.html", "classLogLevel" ]
- ] ],
+ [ "loglevel.h", "loglevel_8h.html", "loglevel_8h" ],
[ "logmessage.cpp", "logmessage_8cpp.html", null ],
[ "logmessage.h", "logmessage_8h.html", [
[ "LogMessage", "classyage_1_1LogMessage.html", "classyage_1_1LogMessage" ],
@@ -29,37 +22,18 @@ var dir_11841e5da2063fc5766a682aee38e289 =
] ],
[ "logsink.cpp", "logsink_8cpp.html", "logsink_8cpp" ],
[ "logsink.h", "logsink_8h.html", "logsink_8h" ],
- [ "picopng.cpp", "picopng_8cpp.html", "picopng_8cpp" ],
- [ "picopng.h", "picopng_8h.html", "picopng_8h" ],
[ "resourcemanager.cpp", "resourcemanager_8cpp.html", null ],
[ "resourcemanager.h", "resourcemanager_8h.html", [
[ "ResourceManager", "classyage_1_1ResourceManager.html", "classyage_1_1ResourceManager" ]
] ],
- [ "sprite.cpp", "sprite_8cpp.html", null ],
- [ "sprite.h", "sprite_8h.html", [
- [ "Sprite", "classyage_1_1Sprite.html", "classyage_1_1Sprite" ]
- ] ],
- [ "spritebatch.cpp", "spritebatch_8cpp.html", null ],
- [ "spritebatch.h", "spritebatch_8h.html", [
- [ "Glyph", "classyage_1_1Glyph.html", "classyage_1_1Glyph" ],
- [ "RenderBatch", "classyage_1_1RenderBatch.html", "classyage_1_1RenderBatch" ],
- [ "SpriteBatch", "classyage_1_1SpriteBatch.html", "classyage_1_1SpriteBatch" ]
- ] ],
[ "spritesheet.cpp", "spritesheet_8cpp.html", null ],
[ "spritesheet.h", "spritesheet_8h.html", "spritesheet_8h" ],
- [ "texture.h", "texture_8h.html", [
- [ "Texture", "structyage_1_1Texture.html", "structyage_1_1Texture" ]
- ] ],
+ [ "stb_image.cpp", "stb__image_8cpp.html", "stb__image_8cpp" ],
+ [ "stb_image.h", "stb__image_8h.html", "stb__image_8h" ],
[ "texturecache.cpp", "texturecache_8cpp.html", null ],
[ "texturecache.h", "texturecache_8h.html", [
[ "TextureCache", "classyage_1_1TextureCache.html", "classyage_1_1TextureCache" ]
] ],
- [ "vertex.h", "vertex_8h.html", [
- [ "Position", "structyage_1_1Position.html", "structyage_1_1Position" ],
- [ "Colour", "structyage_1_1Colour.html", "structyage_1_1Colour" ],
- [ "UV", "structyage_1_1UV.html", "structyage_1_1UV" ],
- [ "Vertex", "structyage_1_1Vertex.html", "structyage_1_1Vertex" ]
- ] ],
- [ "window.cpp", "window_8cpp.html", "window_8cpp" ],
+ [ "window.cpp", "window_8cpp.html", null ],
[ "window.h", "window_8h.html", "window_8h" ]
]; \ No newline at end of file
diff --git a/dir_48a91ae829881cbedcfc124d2027890d.html b/dir_48a91ae829881cbedcfc124d2027890d.html
index 972675ba..d3edf5d4 100644
--- a/dir_48a91ae829881cbedcfc124d2027890d.html
+++ b/dir_48a91ae829881cbedcfc124d2027890d.html
@@ -124,7 +124,7 @@ Files</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_a58d7658bbcfd3d3d7296185ebe55c28.html b/dir_a58d7658bbcfd3d3d7296185ebe55c28.html
index a667c3f1..1a57cb9c 100644
--- a/dir_a58d7658bbcfd3d3d7296185ebe55c28.html
+++ b/dir_a58d7658bbcfd3d3d7296185ebe55c28.html
@@ -156,7 +156,7 @@ Files</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_aa7f86daaaa64c448f636c0e65de2cec.html b/dir_aa7f86daaaa64c448f636c0e65de2cec.html
index a1f1713e..775d4f71 100644
--- a/dir_aa7f86daaaa64c448f636c0e65de2cec.html
+++ b/dir_aa7f86daaaa64c448f636c0e65de2cec.html
@@ -116,7 +116,7 @@ Files</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html">math</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/dir_d09e80fdcf0bb585bbe3b7099c52d028.html b/dir_d09e80fdcf0bb585bbe3b7099c52d028.html
new file mode 100644
index 00000000..ac14956d
--- /dev/null
+++ b/dir_d09e80fdcf0bb585bbe3b7099c52d028.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/data Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_d09e80fdcf0bb585bbe3b7099c52d028.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">data Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:input_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="input_8h.html">input.h</a> <a href="input_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:input_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:texture_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="texture_8h.html">texture.h</a> <a href="texture_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:texture_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:vertex_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vertex_8h.html">vertex.h</a> <a href="vertex_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:vertex_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight"><hr/>
+ <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/dir_d09e80fdcf0bb585bbe3b7099c52d028.js b/dir_d09e80fdcf0bb585bbe3b7099c52d028.js
new file mode 100644
index 00000000..1cab60df
--- /dev/null
+++ b/dir_d09e80fdcf0bb585bbe3b7099c52d028.js
@@ -0,0 +1,13 @@
+var dir_d09e80fdcf0bb585bbe3b7099c52d028 =
+[
+ [ "input.h", "input_8h.html", "input_8h" ],
+ [ "texture.h", "texture_8h.html", [
+ [ "Texture", "structyage_1_1Texture.html", "structyage_1_1Texture" ]
+ ] ],
+ [ "vertex.h", "vertex_8h.html", [
+ [ "Position", "structyage_1_1Position.html", "structyage_1_1Position" ],
+ [ "Colour", "structyage_1_1Colour.html", "structyage_1_1Colour" ],
+ [ "UV", "structyage_1_1UV.html", "structyage_1_1UV" ],
+ [ "Vertex", "structyage_1_1Vertex.html", "structyage_1_1Vertex" ]
+ ] ]
+]; \ No newline at end of file
diff --git a/drawable_8h.html b/drawable_8h.html
new file mode 100644
index 00000000..27ad9745
--- /dev/null
+++ b/drawable_8h.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/drawable.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('drawable_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">drawable.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a>&quot;</code><br/>
+</div>
+<p><a href="drawable_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Drawable.html">yage::Drawable</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
+<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="drawable_8h.html">drawable.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/drawable_8h_source.html b/drawable_8h_source.html
new file mode 100644
index 00000000..cc65ee75
--- /dev/null
+++ b/drawable_8h_source.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/drawable.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('drawable_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">drawable.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="drawable_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_DRAWABLE_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_DRAWABLE_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spritebatch_8h.html">spritebatch.h</a>&quot;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="classyage_1_1Drawable.html"> 9</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Drawable.html">Drawable</a></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">draw</a>(<a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;sp) = 0;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;};</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html"><div class="ttname"><a href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></div><div class="ttdef"><b>Definition:</b> spritebatch.h:59</div></div>
+<div class="ttc" id="spritebatch_8h_html"><div class="ttname"><a href="spritebatch_8h.html">spritebatch.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="classyage_1_1Drawable_html"><div class="ttname"><a href="classyage_1_1Drawable.html">yage::Drawable</a></div><div class="ttdef"><b>Definition:</b> drawable.h:9</div></div>
+<div class="ttc" id="classyage_1_1Drawable_html_abee95e68b5bffef86a35dafca296c45e"><div class="ttname"><a href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">yage::Drawable::draw</a></div><div class="ttdeci">virtual void draw(SpriteBatch &amp;sp)=0</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="drawable_8h.html">drawable.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/ellipse_8h.html b/ellipse_8h.html
new file mode 100644
index 00000000..2ae37d24
--- /dev/null
+++ b/ellipse_8h.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/ellipse.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('ellipse_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">ellipse.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="ellipse_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="ellipse_8h.html">ellipse.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/ellipse_8h_source.html b/ellipse_8h_source.html
new file mode 100644
index 00000000..3f2e07e6
--- /dev/null
+++ b/ellipse_8h_source.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/ellipse.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('ellipse_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">ellipse.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="ellipse_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef YAGE_RENDER_ELLIPSE_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_RENDER_ELLIPSE_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="ellipse_8h.html">ellipse.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/files.html b/files.html
index d2b4d448..90cf1cbf 100644
--- a/files.html
+++ b/files.html
@@ -116,101 +116,108 @@ $(document).ready(function(){initNavTree('files.html','');});
</td></tr>
<tr id="row_0_0_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="camera_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="camera_8h.html" target="_self">camera.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="glslprogram_8cpp.html" target="_self">glslprogram.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="imageloader_8cpp.html" target="_self">imageloader.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="glslprogram_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="glslprogram_8h.html" target="_self">glslprogram.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="imageloader_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="imageloader_8h.html" target="_self">imageloader.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="imageloader_8cpp.html" target="_self">imageloader.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="iomanager_8cpp.html" target="_self">iomanager.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="imageloader_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="imageloader_8h.html" target="_self">imageloader.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="iomanager_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="iomanager_8h.html" target="_self">iomanager.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="input_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="input_8h.html" target="_self">input.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logger_8cpp.html" target="_self">logger.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="iomanager_8cpp.html" target="_self">iomanager.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logger_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logger_8h.html" target="_self">logger.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="iomanager_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="iomanager_8h.html" target="_self">iomanager.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="loglevel_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="loglevel_8h.html" target="_self">loglevel.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_9_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logger_8cpp.html" target="_self">logger.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_9_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logmessage_8cpp.html" target="_self">logmessage.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logger_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logger_8h.html" target="_self">logger.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logmessage_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logmessage_8h.html" target="_self">logmessage.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_11_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="loglevel_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="loglevel_8h.html" target="_self">loglevel.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_11_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logsink_8cpp.html" target="_self">logsink.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_12_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logmessage_8cpp.html" target="_self">logmessage.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_12_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logsink_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logsink_8h.html" target="_self">logsink.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_13_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logmessage_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logmessage_8h.html" target="_self">logmessage.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_13_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="resourcemanager_8cpp.html" target="_self">resourcemanager.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_14_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="logsink_8cpp.html" target="_self">logsink.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_14_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="resourcemanager_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="resourcemanager_8h.html" target="_self">resourcemanager.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_15_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="logsink_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="logsink_8h.html" target="_self">logsink.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_15_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spritesheet_8cpp.html" target="_self">spritesheet.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_16_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="picopng_8cpp.html" target="_self">picopng.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_17_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="picopng_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="picopng_8h.html" target="_self">picopng.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_16_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="spritesheet_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="spritesheet_8h.html" target="_self">spritesheet.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_18_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="resourcemanager_8cpp.html" target="_self">resourcemanager.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_17_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="stb__image_8cpp.html" target="_self">stb_image.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_18_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="stb__image_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="stb__image_8h.html" target="_self">stb_image.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_19_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="texturecache_8cpp.html" target="_self">texturecache.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_19_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="resourcemanager_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="resourcemanager_8h.html" target="_self">resourcemanager.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_20_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="texturecache_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="texturecache_8h.html" target="_self">texturecache.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_20_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sprite_8cpp.html" target="_self">sprite.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_0_21_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="window_8cpp.html" target="_self">window.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_21_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="sprite_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="sprite_8h.html" target="_self">sprite.h</a></td><td class="desc"><hr/>
+<tr id="row_0_0_22_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="window_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="window_8h.html" target="_self">window.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_22_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spritebatch_8cpp.html" target="_self">spritebatch.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html" target="_self">data</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="input_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="input_8h.html" target="_self">input.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_23_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="spritebatch_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="spritebatch_8h.html" target="_self">spritebatch.h</a></td><td class="desc"><hr/>
+<tr id="row_0_1_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="texture_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="texture_8h.html" target="_self">texture.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_24_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spritesheet_8cpp.html" target="_self">spritesheet.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_1_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="vertex_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="vertex_8h.html" target="_self">vertex.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_25_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="spritesheet_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="spritesheet_8h.html" target="_self">spritesheet.h</a></td><td class="desc"><hr/>
+<tr id="row_0_2_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_2_')"/><img id="img_0_2_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_2_')"/><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html" target="_self">math</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="matrix_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="matrix_8h.html" target="_self">matrix.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_26_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="texture_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="texture_8h.html" target="_self">texture.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_3_')"/><img id="img_0_3_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_3_')"/><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html" target="_self">physics</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="body_8cpp.html" target="_self">body.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_27_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="texturecache_8cpp.html" target="_self">texturecache.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_3_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="body_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="body_8h.html" target="_self">body.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_28_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="texturecache_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="texturecache_8h.html" target="_self">texturecache.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="collider_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="collider_8h.html" target="_self">collider.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_29_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="vertex_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="vertex_8h.html" target="_self">vertex.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="collisionbody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="collisionbody_8h.html" target="_self">collisionbody.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_30_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="window_8cpp.html" target="_self">window.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_3_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="particlebody_8cpp.html" target="_self">particlebody.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_0_31_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="window_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="window_8h.html" target="_self">window.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="particlebody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="particlebody_8h.html" target="_self">particlebody.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html" target="_self">math</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="matrix_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="matrix_8h.html" target="_self">matrix.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="physics_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="physics_8h.html" target="_self">physics.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_2_')"/><img id="img_0_2_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_2_')"/><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html" target="_self">physics</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="body_8cpp.html" target="_self">body.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_3_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rectanglecollider_8cpp.html" target="_self">rectanglecollider.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="body_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="body_8h.html" target="_self">body.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="rectanglecollider_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rectanglecollider_8h.html" target="_self">rectanglecollider.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_2_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="collider_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="collider_8h.html" target="_self">collider.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_9_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rigidbody_8cpp.html" target="_self">rigidbody.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_3_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="collisionbody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="collisionbody_8h.html" target="_self">collisionbody.h</a></td><td class="desc"><hr/>
+<tr id="row_0_3_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="rigidbody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rigidbody_8h.html" target="_self">rigidbody.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_4_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="particlebody_8cpp.html" target="_self">particlebody.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_4_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_4_')"/><img id="img_0_4_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_4_')"/><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html" target="_self">render</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="batch_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="batch_8h.html" target="_self">batch.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="drawable_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="drawable_8h.html" target="_self">drawable.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ellipse_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="ellipse_8h.html" target="_self">ellipse.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rectangle_8cpp.html" target="_self">rectangle.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="rectangle_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rectangle_8h.html" target="_self">rectangle.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="shader_8cpp.html" target="_self">shader.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_5_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="particlebody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="particlebody_8h.html" target="_self">particlebody.h</a></td><td class="desc"><hr/>
+<tr id="row_0_4_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="shader_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="shader_8h.html" target="_self">shader.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_6_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="physics_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="physics_8h.html" target="_self">physics.h</a></td><td class="desc"><hr/>
+<tr id="row_0_4_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="shape_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="shape_8h.html" target="_self">shape.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sprite_8cpp.html" target="_self">sprite.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_7_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rectanglecollider_8cpp.html" target="_self">rectanglecollider.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_4_9_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="sprite_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="sprite_8h.html" target="_self">sprite.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_8_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="rectanglecollider_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rectanglecollider_8h.html" target="_self">rectanglecollider.h</a></td><td class="desc"><hr/>
+<tr id="row_0_4_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spritebatch_8cpp.html" target="_self">spritebatch.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_9_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rigidbody_8cpp.html" target="_self">rigidbody.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_4_11_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="spritebatch_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="spritebatch_8h.html" target="_self">spritebatch.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_2_10_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="rigidbody_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rigidbody_8h.html" target="_self">rigidbody.h</a></td><td class="desc"><hr/>
+<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_5_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_5_')"/><img id="img_0_5_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_5_')"/><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html" target="_self">util</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="active_8cpp.html" target="_self">active.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_0_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_3_')"/><img id="img_0_3_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_3_')"/><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html" target="_self">util</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="active_8cpp.html" target="_self">active.cpp</a></td><td class="desc"><hr/>
+<tr id="row_0_5_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="active_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="active_8h.html" target="_self">active.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_3_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="active_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="active_8h.html" target="_self">active.h</a></td><td class="desc"><hr/>
+<tr id="row_0_5_2_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="syncqueue_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="syncqueue_8h.html" target="_self">syncqueue.h</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_3_2_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="syncqueue_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="syncqueue_8h.html" target="_self">syncqueue.h</a></td><td class="desc"><hr/>
+<tr id="row_0_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="yage_8cpp.html" target="_self">yage.cpp</a></td><td class="desc"><hr/>
</td></tr>
-<tr id="row_0_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="yage_8cpp.html" target="_self">yage.cpp</a></td><td class="desc"><hr/>
- </td></tr>
-<tr id="row_0_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="yage_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="yage_8h.html" target="_self">yage.h</a></td><td class="desc"><hr/>
+<tr id="row_0_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="yage_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="yage_8h.html" target="_self">yage.h</a></td><td class="desc"><hr/>
</td></tr>
</table>
</div><!-- directory -->
@@ -219,7 +226,7 @@ $(document).ready(function(){initNavTree('files.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions.html b/functions.html
index f937ac7d..015d395e 100644
--- a/functions.html
+++ b/functions.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -154,31 +154,22 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f">yage::Body</a>
</li>
<li>Active()
-: <a class="el" href="classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b">yage::Active</a>
-</li>
-<li>active_
-: <a class="el" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">yage::Logger</a>
+: <a class="el" href="classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd">yage::Active</a>
</li>
<li>add()
: <a class="el" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">yage::Logger</a>
</li>
-<li>addAttribute()
-: <a class="el" href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">yage::GlslProgram</a>
-</li>
<li>applyForce()
: <a class="el" href="classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878">yage::Body</a>
, <a class="el" href="classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b">yage::ParticleBody</a>
</li>
-<li>attribute_index_
-: <a class="el" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">yage::GlslProgram</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_b.html b/functions_b.html
index 6afa2e7c..0d63b575 100644
--- a/functions_b.html
+++ b/functions_b.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -151,26 +151,18 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
: <a class="el" href="structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f">yage::Colour</a>
</li>
<li>begin()
-: <a class="el" href="classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
+: <a class="el" href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">yage::Batch</a>
+, <a class="el" href="classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">yage::SpriteBatch</a>
</li>
<li>Body()
: <a class="el" href="classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86">yage::Body</a>
</li>
-<li>bottom_left()
-: <a class="el" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">yage::Glyph</a>
+<li>bottom_left
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">yage::details::Glyph</a>
</li>
-<li>bottom_left_
-: <a class="el" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">yage::Glyph</a>
-</li>
-<li>bottom_right()
-: <a class="el" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">yage::Glyph</a>
-</li>
-<li>bottom_right_
-: <a class="el" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">yage::Glyph</a>
-</li>
-<li>buffer_
-: <a class="el" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">yage::LogMessage</a>
+<li>bottom_right
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">yage::details::Glyph</a>
</li>
</ul>
</div><!-- contents -->
@@ -178,7 +170,7 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_c.html b/functions_c.html
index 9415ee90..7bedabed 100644
--- a/functions_c.html
+++ b/functions_c.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -153,19 +153,12 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
<li>Camera()
: <a class="el" href="classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611">yage::Camera</a>
</li>
-<li>camera_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">yage::Camera</a>
-</li>
<li>clear()
: <a class="el" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">yage::Logger</a>
</li>
<li>clearBuffer()
: <a class="el" href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">yage::Window</a>
</li>
-<li>clone()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">yage::LogSink::Concept</a>
-, <a class="el" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">yage::LogSink::Model&lt; T &gt;</a>
-</li>
<li>Collider()
: <a class="el" href="classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3">yage::Collider</a>
</li>
@@ -185,21 +178,6 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
<li>colSize()
: <a class="el" href="classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>compileShader()
-: <a class="el" href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">yage::GlslProgram</a>
-</li>
-<li>compileShaderFromFile()
-: <a class="el" href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">yage::GlslProgram</a>
-</li>
-<li>compileShaders()
-: <a class="el" href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">yage::GlslProgram</a>
-</li>
-<li>compileShadersFromFile()
-: <a class="el" href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">yage::GlslProgram</a>
-</li>
-<li>cond_
-: <a class="el" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">yage::SyncQueue&lt; T &gt;</a>
-</li>
<li>Coordinate()
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a43fb6bd3e325d5cd7ec436778605db2a">yage::details::Coordinate</a>
</li>
@@ -207,19 +185,13 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
: <a class="el" href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">yage::Active</a>
, <a class="el" href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">yage::Window</a>
</li>
-<li>createRenderBatches()
-: <a class="el" href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">yage::SpriteBatch</a>
-</li>
-<li>createVertexArray()
-: <a class="el" href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">yage::SpriteBatch</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_d.html b/functions_d.html
index 9f2d0325..1fc344ce 100644
--- a/functions_d.html
+++ b/functions_d.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,21 +150,16 @@ $(document).ready(function(){initNavTree('functions_d.html','');});
<li>data_
: <a class="el" href="classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>defaultSetup()
-: <a class="el" href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">yage::GlslProgram</a>
-</li>
-<li>depth()
-: <a class="el" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">yage::Glyph</a>
-</li>
-<li>depth_
-: <a class="el" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">yage::Glyph</a>
+<li>depth
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">yage::details::Glyph</a>
</li>
<li>details::Row&lt; Rows, Cols, Type &gt;
: <a class="el" href="classyage_1_1Matrix.html#a9e9cbf0fd7c768696ef909bdac1a706d">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
<li>draw()
-: <a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">yage::Sprite</a>
-, <a class="el" href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">yage::SpriteBatch</a>
+: <a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">yage::Drawable</a>
+, <a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">yage::Sprite</a>
+, <a class="el" href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">yage::SpriteBatch</a>
</li>
</ul>
</div><!-- contents -->
@@ -172,7 +167,7 @@ $(document).ready(function(){initNavTree('functions_d.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_dup.js b/functions_dup.js
index 8aef225e..9dcc0689 100644
--- a/functions_dup.js
+++ b/functions_dup.js
@@ -9,12 +9,12 @@ var functions_dup =
[ "g", "functions_g.html", null ],
[ "h", "functions_h.html", null ],
[ "i", "functions_i.html", null ],
+ [ "k", "functions_k.html", null ],
[ "l", "functions_l.html", null ],
[ "m", "functions_m.html", null ],
[ "n", "functions_n.html", null ],
[ "o", "functions_o.html", null ],
[ "p", "functions_p.html", null ],
- [ "q", "functions_q.html", null ],
[ "r", "functions_r.html", null ],
[ "s", "functions_s.html", null ],
[ "t", "functions_t.html", null ],
diff --git a/functions_e.html b/functions_e.html
index e6df5d6a..e0d6dea5 100644
--- a/functions_e.html
+++ b/functions_e.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -148,16 +148,20 @@ $(document).ready(function(){initNavTree('functions_e.html','');});
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>end()
-: <a class="el" href="classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
+: <a class="el" href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">yage::Batch</a>
+, <a class="el" href="classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">yage::SpriteBatch</a>
</li>
+<li>eof
+: <a class="el" href="structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177">stbi_io_callbacks</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_f.html b/functions_f.html
index 1dc82eae..6b8824f4 100644
--- a/functions_f.html
+++ b/functions_f.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,9 +150,6 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
<li>fileContent()
: <a class="el" href="classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9">yage::SpriteSheet</a>
</li>
-<li>fileLocations_
-: <a class="el" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">yage::SpriteSheet</a>
-</li>
<li>fileName
: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">yage::LogMessage::Meta</a>
</li>
@@ -162,16 +159,13 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
<li>force_
: <a class="el" href="classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d">yage::Body</a>
</li>
-<li>fragment_shader_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">yage::GlslProgram</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_func.html b/functions_func.html
index 8942e55c..5dbbb1b2 100644
--- a/functions_func.html
+++ b/functions_func.html
@@ -96,9 +96,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_h"><span>h</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_k"><span>k</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
@@ -152,9 +152,6 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>add()
: <a class="el" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">yage::Logger</a>
</li>
-<li>addAttribute()
-: <a class="el" href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">yage::GlslProgram</a>
-</li>
<li>applyForce()
: <a class="el" href="classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878">yage::Body</a>
, <a class="el" href="classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b">yage::ParticleBody</a>
@@ -164,18 +161,13 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>begin()
-: <a class="el" href="classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
+: <a class="el" href="classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d">yage::Batch</a>
+, <a class="el" href="classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">yage::SpriteBatch</a>
</li>
<li>Body()
: <a class="el" href="classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86">yage::Body</a>
</li>
-<li>bottom_left()
-: <a class="el" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">yage::Glyph</a>
-</li>
-<li>bottom_right()
-: <a class="el" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">yage::Glyph</a>
-</li>
</ul>
@@ -189,10 +181,6 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>clearBuffer()
: <a class="el" href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">yage::Window</a>
</li>
-<li>clone()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">yage::LogSink::Concept</a>
-, <a class="el" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">yage::LogSink::Model&lt; T &gt;</a>
-</li>
<li>Collider()
: <a class="el" href="classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3">yage::Collider</a>
</li>
@@ -209,18 +197,6 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>colSize()
: <a class="el" href="classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>compileShader()
-: <a class="el" href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">yage::GlslProgram</a>
-</li>
-<li>compileShaderFromFile()
-: <a class="el" href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">yage::GlslProgram</a>
-</li>
-<li>compileShaders()
-: <a class="el" href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">yage::GlslProgram</a>
-</li>
-<li>compileShadersFromFile()
-: <a class="el" href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">yage::GlslProgram</a>
-</li>
<li>Coordinate()
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a0b3a6d9aa1d5b846ad7ebc11bc77c629">yage::details::Coordinate</a>
</li>
@@ -228,32 +204,22 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064">yage::Active</a>
, <a class="el" href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">yage::Window</a>
</li>
-<li>createRenderBatches()
-: <a class="el" href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">yage::SpriteBatch</a>
-</li>
-<li>createVertexArray()
-: <a class="el" href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">yage::SpriteBatch</a>
-</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>defaultSetup()
-: <a class="el" href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">yage::GlslProgram</a>
-</li>
-<li>depth()
-: <a class="el" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">yage::Glyph</a>
-</li>
<li>draw()
-: <a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">yage::Sprite</a>
-, <a class="el" href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">yage::SpriteBatch</a>
+: <a class="el" href="classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e">yage::Drawable</a>
+, <a class="el" href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">yage::Sprite</a>
+, <a class="el" href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">yage::SpriteBatch</a>
</li>
</ul>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>end()
-: <a class="el" href="classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
+: <a class="el" href="classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e">yage::Batch</a>
+, <a class="el" href="classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">yage::SpriteBatch</a>
</li>
</ul>
@@ -277,20 +243,14 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
<li>getTexture()
-: <a class="el" href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">yage::ResourceManager</a>
-, <a class="el" href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">yage::TextureCache</a>
+: <a class="el" href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">yage::ResourceManager</a>
+, <a class="el" href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">yage::TextureCache</a>
</li>
<li>getTextureFromSpriteSheet()
: <a class="el" href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">yage::TextureCache</a>
</li>
-<li>getUniformLocation()
-: <a class="el" href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">yage::GlslProgram</a>
-</li>
-<li>GlslProgram()
-: <a class="el" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">yage::GlslProgram</a>
-</li>
<li>Glyph()
-: <a class="el" href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">yage::Glyph</a>
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">yage::details::Glyph</a>
</li>
</ul>
@@ -304,10 +264,8 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>init()
-: <a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">yage::Sprite</a>
-</li>
-<li>initShaderId()
-: <a class="el" href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">yage::GlslProgram</a>
+: <a class="el" href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">yage::Batch</a>
+, <a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">yage::Sprite</a>
</li>
<li>inside()
: <a class="el" href="classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9">yage::Collider</a>
@@ -319,19 +277,20 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
</ul>
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>linkShaders()
-: <a class="el" href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">yage::GlslProgram</a>
+<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<li>keyPressed()
+: <a class="el" href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">yage::Window</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
<li>loadPng()
: <a class="el" href="classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32">yage::ImageLoader</a>
</li>
<li>Logger()
: <a class="el" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">yage::Logger</a>
</li>
-<li>LogLevel()
-: <a class="el" href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel</a>
-</li>
<li>LogMessage()
: <a class="el" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">yage::LogMessage</a>
</li>
@@ -345,28 +304,15 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>Matrix()
: <a class="el" href="classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>Model()
-: <a class="el" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">yage::LogSink::Model&lt; T &gt;</a>
-</li>
<li>move()
: <a class="el" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">yage::Camera</a>
</li>
</ul>
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>num_vertices()
-: <a class="el" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">yage::RenderBatch</a>
-</li>
-</ul>
-
-
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>offset()
-: <a class="el" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">yage::RenderBatch</a>
-</li>
<li>operator()()
-: <a class="el" href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">yage::Logger</a>
+: <a class="el" href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">yage::Logger</a>
</li>
<li>operator+=()
: <a class="el" href="classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
@@ -379,13 +325,13 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
</li>
<li>operator=()
: <a class="el" href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">yage::Active</a>
-, <a class="el" href="classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2">yage::GlslProgram</a>
-, <a class="el" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">yage::LogMessage</a>
+, <a class="el" href="classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da">yage::LogMessage</a>
, <a class="el" href="classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc">yage::LogSink</a>
+, <a class="el" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">yage::Shader</a>
, <a class="el" href="classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee">yage::Sprite</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f">yage::SpriteBatch</a>
, <a class="el" href="classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6">yage::SyncQueue&lt; T &gt;</a>
-, <a class="el" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">yage::Window</a>
+, <a class="el" href="classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de">yage::Window</a>
</li>
<li>operator==()
: <a class="el" href="classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9">yage::LogSink</a>
@@ -399,9 +345,6 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parseJson()
-: <a class="el" href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">yage::SpriteSheet</a>
-</li>
<li>ParticleBody()
: <a class="el" href="classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0">yage::ParticleBody</a>
</li>
@@ -424,6 +367,9 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>readFileToBuffer()
: <a class="el" href="classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d">yage::IoManager</a>
</li>
+<li>Rectangle()
+: <a class="el" href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">yage::Rectangle</a>
+</li>
<li>RectangleCollider()
: <a class="el" href="classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969">yage::RectangleCollider</a>
</li>
@@ -431,10 +377,13 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245">yage::Logger</a>
</li>
<li>render()
-: <a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch</a>
+: <a class="el" href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">yage::Batch</a>
+, <a class="el" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">yage::Rectangle</a>
+, <a class="el" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">yage::Shape</a>
+, <a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch</a>
</li>
<li>RenderBatch()
-: <a class="el" href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">yage::RenderBatch</a>
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">yage::details::RenderBatch</a>
</li>
<li>RigidBody()
: <a class="el" href="classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606">yage::RigidBody</a>
@@ -445,9 +394,6 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>rowSize()
: <a class="el" href="classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>run()
-: <a class="el" href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">yage::Active</a>
-</li>
</ul>
@@ -458,21 +404,27 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>setColour()
: <a class="el" href="structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf">yage::Vertex</a>
</li>
+<li>setLevel()
+: <a class="el" href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">yage::Logger</a>
+</li>
<li>setPosition()
: <a class="el" href="structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d">yage::Vertex</a>
</li>
+<li>setUniform()
+: <a class="el" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">yage::Shader</a>
+</li>
<li>setUv()
: <a class="el" href="structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50">yage::Vertex</a>
</li>
+<li>Shader()
+: <a class="el" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">yage::Shader</a>
+</li>
<li>shouldClose()
: <a class="el" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">yage::Window</a>
</li>
<li>show()
: <a class="el" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">yage::Window</a>
</li>
-<li>sortGlyphs()
-: <a class="el" href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">yage::SpriteBatch</a>
-</li>
<li>Sprite()
: <a class="el" href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">yage::Sprite</a>
</li>
@@ -495,22 +447,12 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>texture()
-: <a class="el" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">yage::Glyph</a>
-, <a class="el" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">yage::RenderBatch</a>
-</li>
<li>Texture()
: <a class="el" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">yage::Texture</a>
</li>
<li>TextureCache()
: <a class="el" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">yage::TextureCache</a>
</li>
-<li>top_left()
-: <a class="el" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">yage::Glyph</a>
-</li>
-<li>top_right()
-: <a class="el" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">yage::Glyph</a>
-</li>
<li>toString()
: <a class="el" href="classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae">yage::Vector&lt; Rows, Type &gt;</a>
@@ -519,19 +461,16 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
-<li>unuse()
-: <a class="el" href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">yage::GlslProgram</a>
-</li>
<li>update()
: <a class="el" href="classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36">yage::Body</a>
-, <a class="el" href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">yage::Camera</a>
+, <a class="el" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">yage::Camera</a>
, <a class="el" href="classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c">yage::ParticleBody</a>
</li>
<li>use()
-: <a class="el" href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">yage::GlslProgram</a>
+: <a class="el" href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">yage::Shader</a>
</li>
<li>UV()
-: <a class="el" href="structyage_1_1UV.html#ac918524789292937aae5803df3c2673f">yage::UV</a>
+: <a class="el" href="structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde">yage::UV</a>
</li>
</ul>
@@ -563,9 +502,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">yage::Window</a>
</li>
<li>write()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">yage::LogSink::Concept</a>
-, <a class="el" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">yage::LogSink::Model&lt; T &gt;</a>
-, <a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">yage::LogSink</a>
+: <a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">yage::LogSink</a>
</li>
</ul>
@@ -599,6 +536,9 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
: <a class="el" href="classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583">yage::Vector4&lt; Type &gt;</a>
</li>
+<li>zoom()
+: <a class="el" href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">yage::Camera</a>
+</li>
</ul>
@@ -609,15 +549,12 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>~CollisionBody()
: <a class="el" href="classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b">yage::CollisionBody</a>
</li>
-<li>~Concept()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">yage::LogSink::Concept</a>
-</li>
-<li>~GlslProgram()
-: <a class="el" href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">yage::GlslProgram</a>
-</li>
<li>~LogMessage()
: <a class="el" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">yage::LogMessage</a>
</li>
+<li>~Shader()
+: <a class="el" href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">yage::Shader</a>
+</li>
<li>~Sprite()
: <a class="el" href="classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2">yage::Sprite</a>
</li>
@@ -633,7 +570,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_g.html b/functions_g.html
index 4577087a..c2bb0659 100644
--- a/functions_g.html
+++ b/functions_g.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li class="current"><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -157,26 +157,14 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
: <a class="el" href="classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
<li>getTexture()
-: <a class="el" href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">yage::ResourceManager</a>
-, <a class="el" href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">yage::TextureCache</a>
+: <a class="el" href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">yage::ResourceManager</a>
+, <a class="el" href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">yage::TextureCache</a>
</li>
<li>getTextureFromSpriteSheet()
: <a class="el" href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">yage::TextureCache</a>
</li>
-<li>getUniformLocation()
-: <a class="el" href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">yage::GlslProgram</a>
-</li>
-<li>GlslProgram()
-: <a class="el" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">yage::GlslProgram</a>
-</li>
<li>Glyph()
-: <a class="el" href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">yage::Glyph</a>
-</li>
-<li>glyph_ptrs_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">yage::SpriteBatch</a>
-</li>
-<li>glyphs_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">yage::SpriteBatch</a>
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">yage::details::Glyph</a>
</li>
<li>GRAVITY
: <a class="el" href="classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766">yage::Body</a>
@@ -190,7 +178,7 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_h.html b/functions_h.html
index 37161c53..1baf04e5 100644
--- a/functions_h.html
+++ b/functions_h.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li class="current"><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -151,9 +151,6 @@ $(document).ready(function(){initNavTree('functions_h.html','');});
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">yage::Texture</a>
</li>
-<li>height_
-: <a class="el" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">yage::Sprite</a>
-</li>
<li>hide()
: <a class="el" href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">yage::Window</a>
</li>
@@ -163,7 +160,7 @@ $(document).ready(function(){initNavTree('functions_h.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_i.html b/functions_i.html
index 824ed56f..5978343d 100644
--- a/functions_i.html
+++ b/functions_i.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li class="current"><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,17 +150,9 @@ $(document).ready(function(){initNavTree('functions_i.html','');});
<li>id
: <a class="el" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">yage::Texture</a>
</li>
-<li>impl
-: <a class="el" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">yage::LogSink::Model&lt; T &gt;</a>
-</li>
-<li>index_
-: <a class="el" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">yage::details::Row&lt; Rows, Cols, Type &gt;</a>
-</li>
<li>init()
-: <a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">yage::Sprite</a>
-</li>
-<li>initShaderId()
-: <a class="el" href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">yage::GlslProgram</a>
+: <a class="el" href="classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477">yage::Batch</a>
+, <a class="el" href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">yage::Sprite</a>
</li>
<li>inside()
: <a class="el" href="classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9">yage::Collider</a>
@@ -175,7 +167,7 @@ $(document).ready(function(){initNavTree('functions_i.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_q.html b/functions_k.html
index 64575ab7..6f6b0dfa 100644
--- a/functions_q.html
+++ b/functions_k.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('functions_q.html','');});
+$(document).ready(function(){initNavTree('functions_k.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -146,10 +146,9 @@ $(document).ready(function(){initNavTree('functions_q.html','');});
<div class="contents">
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
-<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
-<li>queue_
-: <a class="el" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">yage::Active</a>
-, <a class="el" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">yage::SyncQueue&lt; T &gt;</a>
+<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<li>keyPressed()
+: <a class="el" href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">yage::Window</a>
</li>
</ul>
</div><!-- contents -->
@@ -157,7 +156,7 @@ $(document).ready(function(){initNavTree('functions_q.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_l.html b/functions_l.html
index 9571c8a7..d5de7873 100644
--- a/functions_l.html
+++ b/functions_l.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li class="current"><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,27 +147,24 @@ $(document).ready(function(){initNavTree('functions_l.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lineNo
-: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">yage::LogMessage::Meta</a>
+<li>level
+: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">yage::LogMessage::Meta</a>
</li>
-<li>linkShaders()
-: <a class="el" href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">yage::GlslProgram</a>
+<li>line
+: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">yage::LogMessage::Meta</a>
</li>
<li>loadPng()
: <a class="el" href="classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32">yage::ImageLoader</a>
</li>
<li>Logger()
-: <a class="el" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">yage::Logger</a>
+: <a class="el" href="classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074">yage::Logger</a>
, <a class="el" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a">yage::LogMessage</a>
</li>
-<li>LogLevel()
-: <a class="el" href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel</a>
-</li>
<li>LogMessage()
-: <a class="el" href="classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0">yage::LogMessage</a>
+: <a class="el" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">yage::LogMessage</a>
</li>
<li>LogSink()
-: <a class="el" href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e">yage::LogSink</a>
+: <a class="el" href="classyage_1_1LogSink.html#a8583ac57ebff98ab38c613c03b5bfbba">yage::LogSink</a>
</li>
</ul>
</div><!-- contents -->
@@ -175,7 +172,7 @@ $(document).ready(function(){initNavTree('functions_l.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_m.html b/functions_m.html
index bd4578c6..ab57faff 100644
--- a/functions_m.html
+++ b/functions_m.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li class="current"><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -153,25 +153,16 @@ $(document).ready(function(){initNavTree('functions_m.html','');});
<li>Matrix()
: <a class="el" href="classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>meta_
-: <a class="el" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">yage::LogMessage</a>
-</li>
-<li>Model()
-: <a class="el" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">yage::LogSink::Model&lt; T &gt;</a>
-</li>
<li>move()
: <a class="el" href="classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324">yage::Camera</a>
</li>
-<li>mutex_
-: <a class="el" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">yage::SyncQueue&lt; T &gt;</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_n.html b/functions_n.html
index b6ef3632..8754d46e 100644
--- a/functions_n.html
+++ b/functions_n.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li class="current"><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,22 +147,19 @@ $(document).ready(function(){initNavTree('functions_n.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>num_vertices()
-: <a class="el" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">yage::RenderBatch</a>
+<li>num_vertices
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">yage::details::RenderBatch</a>
</li>
<li>NUM_VERTICES
: <a class="el" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">yage::SpriteBatch</a>
</li>
-<li>num_vertices_
-: <a class="el" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">yage::RenderBatch</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_o.html b/functions_o.html
index cbb76308..1bbf0b47 100644
--- a/functions_o.html
+++ b/functions_o.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li class="current"><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,14 +147,11 @@ $(document).ready(function(){initNavTree('functions_o.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>offset()
-: <a class="el" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">yage::RenderBatch</a>
-</li>
-<li>offset_
-: <a class="el" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">yage::RenderBatch</a>
+<li>offset
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">yage::details::RenderBatch</a>
</li>
<li>operator()()
-: <a class="el" href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">yage::Logger</a>
+: <a class="el" href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">yage::Logger</a>
</li>
<li>operator+=()
: <a class="el" href="classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
@@ -167,10 +164,10 @@ $(document).ready(function(){initNavTree('functions_o.html','');});
</li>
<li>operator=()
: <a class="el" href="classyage_1_1Active.html#add837044e73e4bc9849f09495535600c">yage::Active</a>
-, <a class="el" href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">yage::GlslProgram</a>
-, <a class="el" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">yage::LogMessage</a>
+, <a class="el" href="classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da">yage::LogMessage</a>
, <a class="el" href="classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc">yage::LogSink</a>
-, <a class="el" href="classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee">yage::Sprite</a>
+, <a class="el" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">yage::Shader</a>
+, <a class="el" href="classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897">yage::Sprite</a>
, <a class="el" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">yage::SpriteBatch</a>
, <a class="el" href="classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6">yage::SyncQueue&lt; T &gt;</a>
, <a class="el" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">yage::Window</a>
@@ -180,22 +177,16 @@ $(document).ready(function(){initNavTree('functions_o.html','');});
</li>
<li>operator[]()
: <a class="el" href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190">yage::details::Row&lt; Rows, Cols, Type &gt;</a>
-, <a class="el" href="classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
+, <a class="el" href="classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
, <a class="el" href="classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2">yage::Vector&lt; Rows, Type &gt;</a>
</li>
-<li>ortho_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">yage::Camera</a>
-</li>
-<li>owner_
-: <a class="el" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">yage::LogMessage</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_p.html b/functions_p.html
index 4f7a1e31..44d0b2a0 100644
--- a/functions_p.html
+++ b/functions_p.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li class="current"><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,12 +147,6 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parent_
-: <a class="el" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">yage::details::Row&lt; Rows, Cols, Type &gt;</a>
-</li>
-<li>parseJson()
-: <a class="el" href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">yage::SpriteSheet</a>
-</li>
<li>ParticleBody()
: <a class="el" href="classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0">yage::ParticleBody</a>
</li>
@@ -160,22 +154,18 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
: <a class="el" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">yage::Window</a>
</li>
<li>pop()
-: <a class="el" href="classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e">yage::SyncQueue&lt; T &gt;</a>
+: <a class="el" href="classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27">yage::SyncQueue&lt; T &gt;</a>
</li>
<li>Position()
-: <a class="el" href="structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2">yage::Position</a>
+: <a class="el" href="structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2">yage::Position</a>
</li>
<li>position
: <a class="el" href="structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a">yage::Vertex</a>
</li>
<li>position_
: <a class="el" href="classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157">yage::Body</a>
-, <a class="el" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">yage::Camera</a>
, <a class="el" href="classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161">yage::Collider</a>
</li>
-<li>program_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">yage::GlslProgram</a>
-</li>
<li>push()
: <a class="el" href="classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678">yage::SyncQueue&lt; T &gt;</a>
</li>
@@ -185,7 +175,7 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_r.html b/functions_r.html
index c15fcb32..234359e3 100644
--- a/functions_r.html
+++ b/functions_r.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li class="current"><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,9 +150,15 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
<li>r
: <a class="el" href="structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99">yage::Colour</a>
</li>
+<li>read
+: <a class="el" href="structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82">stbi_io_callbacks</a>
+</li>
<li>readFileToBuffer()
: <a class="el" href="classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d">yage::IoManager</a>
</li>
+<li>Rectangle()
+: <a class="el" href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">yage::Rectangle</a>
+</li>
<li>RectangleCollider()
: <a class="el" href="classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969">yage::RectangleCollider</a>
</li>
@@ -160,13 +166,13 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
: <a class="el" href="classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245">yage::Logger</a>
</li>
<li>render()
-: <a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch</a>
-</li>
-<li>render_batches_
-: <a class="el" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">yage::SpriteBatch</a>
+: <a class="el" href="classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65">yage::Batch</a>
+, <a class="el" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">yage::Rectangle</a>
+, <a class="el" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">yage::Shape</a>
+, <a class="el" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch</a>
</li>
<li>RenderBatch()
-: <a class="el" href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">yage::RenderBatch</a>
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">yage::details::RenderBatch</a>
</li>
<li>RigidBody()
: <a class="el" href="classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606">yage::RigidBody</a>
@@ -177,19 +183,13 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
<li>rowSize()
: <a class="el" href="classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>run()
-: <a class="el" href="classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b">yage::Active</a>
-</li>
-<li>running_
-: <a class="el" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">yage::Active</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_rela.html b/functions_rela.html
index a614a6ed..8c778dac 100644
--- a/functions_rela.html
+++ b/functions_rela.html
@@ -128,7 +128,7 @@ $(document).ready(function(){initNavTree('functions_rela.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_s.html b/functions_s.html
index f5accc50..9714dd92 100644
--- a/functions_s.html
+++ b/functions_s.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li class="current"><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,35 +147,38 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scale_
-: <a class="el" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">yage::Camera</a>
-</li>
<li>send()
: <a class="el" href="classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326">yage::Active</a>
</li>
<li>setColour()
: <a class="el" href="structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf">yage::Vertex</a>
</li>
+<li>setLevel()
+: <a class="el" href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">yage::Logger</a>
+</li>
<li>setPosition()
: <a class="el" href="structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d">yage::Vertex</a>
</li>
+<li>setUniform()
+: <a class="el" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">yage::Shader</a>
+</li>
<li>setUv()
: <a class="el" href="structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50">yage::Vertex</a>
</li>
+<li>Shader()
+: <a class="el" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">yage::Shader</a>
+</li>
<li>shouldClose()
: <a class="el" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">yage::Window</a>
</li>
<li>show()
: <a class="el" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">yage::Window</a>
</li>
-<li>sinks_
-: <a class="el" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">yage::Logger</a>
-</li>
<li>size_
: <a class="el" href="classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308">yage::Collider</a>
</li>
-<li>sortGlyphs()
-: <a class="el" href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">yage::SpriteBatch</a>
+<li>skip
+: <a class="el" href="structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83">stbi_io_callbacks</a>
</li>
<li>Sprite()
: <a class="el" href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">yage::Sprite</a>
@@ -183,9 +186,8 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
<li>sprite()
: <a class="el" href="classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0">yage::SpriteSheet</a>
</li>
-<li>SpriteBatch
-: <a class="el" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">yage::RenderBatch</a>
-, <a class="el" href="classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e">yage::SpriteBatch</a>
+<li>SpriteBatch()
+: <a class="el" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">yage::SpriteBatch</a>
</li>
<li>SpriteSheet()
: <a class="el" href="classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6">yage::SpriteSheet</a>
@@ -202,7 +204,7 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_t.html b/functions_t.html
index 98b4b66c..491dd732 100644
--- a/functions_t.html
+++ b/functions_t.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li class="current"><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -147,42 +147,21 @@ $(document).ready(function(){initNavTree('functions_t.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>texture()
-: <a class="el" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">yage::Glyph</a>
-, <a class="el" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">yage::RenderBatch</a>
+<li>texture
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">yage::details::Glyph</a>
+, <a class="el" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">yage::details::RenderBatch</a>
</li>
<li>Texture()
-: <a class="el" href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c">yage::Texture</a>
-</li>
-<li>texture_
-: <a class="el" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">yage::Glyph</a>
-, <a class="el" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">yage::RenderBatch</a>
-, <a class="el" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">yage::Sprite</a>
-, <a class="el" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">yage::SpriteSheet</a>
-</li>
-<li>texture_cache_
-: <a class="el" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">yage::ResourceManager</a>
-</li>
-<li>texture_map_
-: <a class="el" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">yage::TextureCache</a>
+: <a class="el" href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850">yage::Texture</a>
</li>
<li>TextureCache()
: <a class="el" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">yage::TextureCache</a>
</li>
-<li>thread_
-: <a class="el" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">yage::Active</a>
-</li>
-<li>top_left()
-: <a class="el" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">yage::Glyph</a>
-</li>
-<li>top_left_
-: <a class="el" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">yage::Glyph</a>
-</li>
-<li>top_right()
-: <a class="el" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">yage::Glyph</a>
+<li>top_left
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">yage::details::Glyph</a>
</li>
-<li>top_right_
-: <a class="el" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">yage::Glyph</a>
+<li>top_right
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">yage::details::Glyph</a>
</li>
<li>toString()
: <a class="el" href="classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
@@ -194,7 +173,7 @@ $(document).ready(function(){initNavTree('functions_t.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_type.html b/functions_type.html
index 98ff85a5..92dc9f8d 100644
--- a/functions_type.html
+++ b/functions_type.html
@@ -125,7 +125,7 @@ $(document).ready(function(){initNavTree('functions_type.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_u.html b/functions_u.html
index 12b1293d..54805eaf 100644
--- a/functions_u.html
+++ b/functions_u.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,22 +150,16 @@ $(document).ready(function(){initNavTree('functions_u.html','');});
<li>u
: <a class="el" href="structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053">yage::UV</a>
</li>
-<li>unuse()
-: <a class="el" href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">yage::GlslProgram</a>
-</li>
<li>update()
: <a class="el" href="classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36">yage::Body</a>
-, <a class="el" href="classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86">yage::Camera</a>
+, <a class="el" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">yage::Camera</a>
, <a class="el" href="classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c">yage::ParticleBody</a>
</li>
-<li>update_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">yage::Camera</a>
-</li>
<li>use()
-: <a class="el" href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">yage::GlslProgram</a>
+: <a class="el" href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">yage::Shader</a>
</li>
<li>UV()
-: <a class="el" href="structyage_1_1UV.html#ac918524789292937aae5803df3c2673f">yage::UV</a>
+: <a class="el" href="structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde">yage::UV</a>
</li>
<li>uv
: <a class="el" href="structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e">yage::Vertex</a>
@@ -176,7 +170,7 @@ $(document).ready(function(){initNavTree('functions_u.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_v.html b/functions_v.html
index 7fecd0e4..11b18b75 100644
--- a/functions_v.html
+++ b/functions_v.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,26 +150,17 @@ $(document).ready(function(){initNavTree('functions_v.html','');});
<li>v
: <a class="el" href="structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793">yage::UV</a>
</li>
-<li>vao_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">yage::SpriteBatch</a>
-</li>
-<li>vbo_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">yage::SpriteBatch</a>
-</li>
-<li>vbo_id_
-: <a class="el" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">yage::Sprite</a>
-</li>
<li>Vector()
: <a class="el" href="classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa">yage::Vector&lt; Rows, Type &gt;</a>
</li>
<li>Vector2()
-: <a class="el" href="classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea">yage::Vector2&lt; Type &gt;</a>
+: <a class="el" href="classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822">yage::Vector2&lt; Type &gt;</a>
</li>
<li>Vector3()
: <a class="el" href="classyage_1_1Vector3.html#a745b76ba3e49f5c73f53cb065ddf337b">yage::Vector3&lt; Type &gt;</a>
</li>
<li>Vector4()
-: <a class="el" href="classyage_1_1Vector4.html#ab6e8f6e88c13d3bbfa1a6591d97b7d03">yage::Vector4&lt; Type &gt;</a>
+: <a class="el" href="classyage_1_1Vector4.html#ae40311bf406263427426a7de5108c6c1">yage::Vector4&lt; Type &gt;</a>
</li>
<li>velocity_
: <a class="el" href="classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741">yage::Body</a>
@@ -177,16 +168,13 @@ $(document).ready(function(){initNavTree('functions_v.html','');});
<li>Vertex()
: <a class="el" href="structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e">yage::Vertex</a>
</li>
-<li>vertex_shader_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">yage::GlslProgram</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_vars.html b/functions_vars.html
index 5ebcbcef..47516819 100644
--- a/functions_vars.html
+++ b/functions_vars.html
@@ -91,6 +91,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_h"><span>h</span></a></li>
@@ -100,7 +101,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_q"><span>q</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
@@ -151,12 +151,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>acceleration_
: <a class="el" href="classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f">yage::Body</a>
</li>
-<li>active_
-: <a class="el" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">yage::Logger</a>
-</li>
-<li>attribute_index_
-: <a class="el" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">yage::GlslProgram</a>
-</li>
</ul>
@@ -164,28 +158,19 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>b
: <a class="el" href="structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f">yage::Colour</a>
</li>
-<li>bottom_left_
-: <a class="el" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">yage::Glyph</a>
-</li>
-<li>bottom_right_
-: <a class="el" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">yage::Glyph</a>
+<li>bottom_left
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">yage::details::Glyph</a>
</li>
-<li>buffer_
-: <a class="el" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">yage::LogMessage</a>
+<li>bottom_right
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">yage::details::Glyph</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>camera_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3">yage::Camera</a>
-</li>
<li>colour
: <a class="el" href="structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182">yage::Vertex</a>
</li>
-<li>cond_
-: <a class="el" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">yage::SyncQueue&lt; T &gt;</a>
-</li>
</ul>
@@ -193,25 +178,26 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>data_
: <a class="el" href="classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed">yage::Matrix&lt; Rows, Cols, Type &gt;</a>
</li>
-<li>depth_
-: <a class="el" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">yage::Glyph</a>
+<li>depth
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">yage::details::Glyph</a>
</li>
</ul>
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fileLocations_
-: <a class="el" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">yage::SpriteSheet</a>
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>eof
+: <a class="el" href="structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177">stbi_io_callbacks</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fileName
: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">yage::LogMessage::Meta</a>
</li>
<li>force_
: <a class="el" href="classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d">yage::Body</a>
</li>
-<li>fragment_shader_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">yage::GlslProgram</a>
-</li>
</ul>
@@ -219,12 +205,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>g
: <a class="el" href="structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd">yage::Colour</a>
</li>
-<li>glyph_ptrs_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">yage::SpriteBatch</a>
-</li>
-<li>glyphs_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">yage::SpriteBatch</a>
-</li>
<li>GRAVITY
: <a class="el" href="classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766">yage::Body</a>
</li>
@@ -239,9 +219,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">yage::Texture</a>
</li>
-<li>height_
-: <a class="el" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">yage::Sprite</a>
-</li>
</ul>
@@ -249,18 +226,15 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>id
: <a class="el" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">yage::Texture</a>
</li>
-<li>impl
-: <a class="el" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">yage::LogSink::Model&lt; T &gt;</a>
-</li>
-<li>index_
-: <a class="el" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">yage::details::Row&lt; Rows, Cols, Type &gt;</a>
-</li>
</ul>
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lineNo
-: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">yage::LogMessage::Meta</a>
+<li>level
+: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">yage::LogMessage::Meta</a>
+</li>
+<li>line
+: <a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">yage::LogMessage::Meta</a>
</li>
</ul>
@@ -269,61 +243,34 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>mass_
: <a class="el" href="classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289">yage::Body</a>
</li>
-<li>meta_
-: <a class="el" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">yage::LogMessage</a>
-</li>
-<li>mutex_
-: <a class="el" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">yage::SyncQueue&lt; T &gt;</a>
-</li>
</ul>
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>num_vertices
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">yage::details::RenderBatch</a>
+</li>
<li>NUM_VERTICES
: <a class="el" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">yage::SpriteBatch</a>
</li>
-<li>num_vertices_
-: <a class="el" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">yage::RenderBatch</a>
-</li>
</ul>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>offset_
-: <a class="el" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">yage::RenderBatch</a>
-</li>
-<li>ortho_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26">yage::Camera</a>
-</li>
-<li>owner_
-: <a class="el" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">yage::LogMessage</a>
+<li>offset
+: <a class="el" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">yage::details::RenderBatch</a>
</li>
</ul>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parent_
-: <a class="el" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">yage::details::Row&lt; Rows, Cols, Type &gt;</a>
-</li>
<li>position
: <a class="el" href="structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a">yage::Vertex</a>
</li>
<li>position_
: <a class="el" href="classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157">yage::Body</a>
-, <a class="el" href="classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2">yage::Camera</a>
, <a class="el" href="classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161">yage::Collider</a>
</li>
-<li>program_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">yage::GlslProgram</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
-<li>queue_
-: <a class="el" href="classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3">yage::Active</a>
-, <a class="el" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">yage::SyncQueue&lt; T &gt;</a>
-</li>
</ul>
@@ -331,52 +278,32 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>r
: <a class="el" href="structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99">yage::Colour</a>
</li>
-<li>render_batches_
-: <a class="el" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">yage::SpriteBatch</a>
-</li>
-<li>running_
-: <a class="el" href="classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db">yage::Active</a>
+<li>read
+: <a class="el" href="structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82">stbi_io_callbacks</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scale_
-: <a class="el" href="classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f">yage::Camera</a>
-</li>
-<li>sinks_
-: <a class="el" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">yage::Logger</a>
-</li>
<li>size_
: <a class="el" href="classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308">yage::Collider</a>
</li>
-<li>SpriteBatch
-: <a class="el" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">yage::RenderBatch</a>
+<li>skip
+: <a class="el" href="structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83">stbi_io_callbacks</a>
</li>
</ul>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>texture_
-: <a class="el" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">yage::Glyph</a>
-, <a class="el" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">yage::RenderBatch</a>
-, <a class="el" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">yage::Sprite</a>
-, <a class="el" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">yage::SpriteSheet</a>
-</li>
-<li>texture_cache_
-: <a class="el" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">yage::ResourceManager</a>
-</li>
-<li>texture_map_
-: <a class="el" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">yage::TextureCache</a>
+<li>texture
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">yage::details::Glyph</a>
+, <a class="el" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">yage::details::RenderBatch</a>
</li>
-<li>thread_
-: <a class="el" href="classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50">yage::Active</a>
+<li>top_left
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">yage::details::Glyph</a>
</li>
-<li>top_left_
-: <a class="el" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">yage::Glyph</a>
-</li>
-<li>top_right_
-: <a class="el" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">yage::Glyph</a>
+<li>top_right
+: <a class="el" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">yage::details::Glyph</a>
</li>
</ul>
@@ -385,9 +312,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>u
: <a class="el" href="structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053">yage::UV</a>
</li>
-<li>update_matrix_
-: <a class="el" href="classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c">yage::Camera</a>
-</li>
<li>uv
: <a class="el" href="structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e">yage::Vertex</a>
</li>
@@ -398,21 +322,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>v
: <a class="el" href="structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793">yage::UV</a>
</li>
-<li>vao_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">yage::SpriteBatch</a>
-</li>
-<li>vbo_
-: <a class="el" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">yage::SpriteBatch</a>
-</li>
-<li>vbo_id_
-: <a class="el" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">yage::Sprite</a>
-</li>
<li>velocity_
: <a class="el" href="classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741">yage::Body</a>
</li>
-<li>vertex_shader_id_
-: <a class="el" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">yage::GlslProgram</a>
-</li>
</ul>
@@ -424,15 +336,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">yage::Texture</a>
</li>
-<li>width_
-: <a class="el" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">yage::Sprite</a>
-</li>
-<li>window_
-: <a class="el" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">yage::Window</a>
-</li>
-<li>wrapper_
-: <a class="el" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">yage::LogSink</a>
-</li>
</ul>
@@ -440,12 +343,10 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>x
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91">yage::Position</a>
+, <a class="el" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">yage::Texture</a>
, <a class="el" href="classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13">yage::Vector4&lt; Type &gt;</a>
</li>
-<li>x_
-: <a class="el" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">yage::Sprite</a>
-</li>
</ul>
@@ -453,12 +354,10 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>y
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27">yage::Position</a>
+, <a class="el" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">yage::Texture</a>
, <a class="el" href="classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735">yage::Vector4&lt; Type &gt;</a>
</li>
-<li>y_
-: <a class="el" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">yage::Sprite</a>
-</li>
</ul>
@@ -473,7 +372,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_w.html b/functions_w.html
index 89c3a82e..45e5704b 100644
--- a/functions_w.html
+++ b/functions_w.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -154,22 +154,11 @@ $(document).ready(function(){initNavTree('functions_w.html','');});
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">yage::Texture</a>
</li>
-<li>width_
-: <a class="el" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">yage::Sprite</a>
-</li>
<li>Window()
-: <a class="el" href="classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821">yage::Window</a>
-</li>
-<li>window_
-: <a class="el" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">yage::Window</a>
-</li>
-<li>wrapper_
-: <a class="el" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">yage::LogSink</a>
+: <a class="el" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">yage::Window</a>
</li>
<li>write()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">yage::LogSink::Concept</a>
-, <a class="el" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">yage::LogSink::Model&lt; T &gt;</a>
-, <a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">yage::LogSink</a>
+: <a class="el" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">yage::LogSink</a>
</li>
</ul>
</div><!-- contents -->
@@ -177,7 +166,7 @@ $(document).ready(function(){initNavTree('functions_w.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_x.html b/functions_x.html
index 39dd1d35..34fc24db 100644
--- a/functions_x.html
+++ b/functions_x.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,13 +150,11 @@ $(document).ready(function(){initNavTree('functions_x.html','');});
<li>x
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91">yage::Position</a>
+, <a class="el" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">yage::Texture</a>
, <a class="el" href="classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf">yage::Vector2&lt; Type &gt;</a>
-, <a class="el" href="classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0">yage::Vector3&lt; Type &gt;</a>
+, <a class="el" href="classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13">yage::Vector4&lt; Type &gt;</a>
</li>
-<li>x_
-: <a class="el" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">yage::Sprite</a>
-</li>
<li>xPosition()
: <a class="el" href="classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225">yage::Body</a>
</li>
@@ -166,7 +164,7 @@ $(document).ready(function(){initNavTree('functions_x.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_y.html b/functions_y.html
index ee294770..c83f58d4 100644
--- a/functions_y.html
+++ b/functions_y.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -150,13 +150,11 @@ $(document).ready(function(){initNavTree('functions_y.html','');});
<li>y
: <a class="el" href="structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508">yage::details::Coordinate</a>
, <a class="el" href="structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27">yage::Position</a>
+, <a class="el" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">yage::Texture</a>
, <a class="el" href="classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2">yage::Vector2&lt; Type &gt;</a>
-, <a class="el" href="classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8">yage::Vector3&lt; Type &gt;</a>
+, <a class="el" href="classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735">yage::Vector4&lt; Type &gt;</a>
</li>
-<li>y_
-: <a class="el" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">yage::Sprite</a>
-</li>
<li>yPosition()
: <a class="el" href="classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364">yage::Body</a>
</li>
@@ -166,7 +164,7 @@ $(document).ready(function(){initNavTree('functions_y.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_z.html b/functions_z.html
index 1abc69b4..16588f79 100644
--- a/functions_z.html
+++ b/functions_z.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -151,13 +151,16 @@ $(document).ready(function(){initNavTree('functions_z.html','');});
: <a class="el" href="classyage_1_1Vector3.html#a163c42efd0a4f365abb612c031859820">yage::Vector3&lt; Type &gt;</a>
, <a class="el" href="classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583">yage::Vector4&lt; Type &gt;</a>
</li>
+<li>zoom()
+: <a class="el" href="classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0">yage::Camera</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/functions_~.html b/functions_~.html
index 77accdba..903e1ca3 100644
--- a/functions_~.html
+++ b/functions_~.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="functions_g.html#index_g"><span>g</span></a></li>
<li><a href="functions_h.html#index_h"><span>h</span></a></li>
<li><a href="functions_i.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_k.html#index_k"><span>k</span></a></li>
<li><a href="functions_l.html#index_l"><span>l</span></a></li>
<li><a href="functions_m.html#index_m"><span>m</span></a></li>
<li><a href="functions_n.html#index_n"><span>n</span></a></li>
<li><a href="functions_o.html#index_o"><span>o</span></a></li>
<li><a href="functions_p.html#index_p"><span>p</span></a></li>
- <li><a href="functions_q.html#index_q"><span>q</span></a></li>
<li><a href="functions_r.html#index_r"><span>r</span></a></li>
<li><a href="functions_s.html#index_s"><span>s</span></a></li>
<li><a href="functions_t.html#index_t"><span>t</span></a></li>
@@ -153,15 +153,12 @@ $(document).ready(function(){initNavTree('functions_~.html','');});
<li>~CollisionBody()
: <a class="el" href="classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b">yage::CollisionBody</a>
</li>
-<li>~Concept()
-: <a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">yage::LogSink::Concept</a>
-</li>
-<li>~GlslProgram()
-: <a class="el" href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">yage::GlslProgram</a>
-</li>
<li>~LogMessage()
: <a class="el" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">yage::LogMessage</a>
</li>
+<li>~Shader()
+: <a class="el" href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">yage::Shader</a>
+</li>
<li>~Sprite()
: <a class="el" href="classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2">yage::Sprite</a>
</li>
@@ -177,7 +174,7 @@ $(document).ready(function(){initNavTree('functions_~.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/globals.html b/globals.html
index 7860e7ce..096e3dfe 100644
--- a/globals.html
+++ b/globals.html
@@ -77,10 +77,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li class="current"><a href="#index_y"><span>y</span></a></li>
+ </ul>
+ </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
@@ -111,12 +122,179 @@ $(document).ready(function(){initNavTree('globals.html','');});
</div>
<div class="contents">
-<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fileHandle_
: <a class="el" href="logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1">logsink.cpp</a>
</li>
-<li>gLog
-: <a class="el" href="logger_8h.html#aade1a167159e476dee85a6a097cb7ccc">logger.h</a>
+</ul>
+
+
+<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>GLFW_INCLUDE_NONE
+: <a class="el" href="input_8h.html#a088324ad8995e3eb76024e3e79083d48">input.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>STB_IMAGE_IMPLEMENTATION
+: <a class="el" href="stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78">stb_image.cpp</a>
+</li>
+<li>stbi_convert_iphone_png_to_rgb()
+: <a class="el" href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stb_image.h</a>
+</li>
+<li>STBI_default
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029">stb_image.h</a>
+</li>
+<li>stbi_failure_reason()
+: <a class="el" href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stb_image.h</a>
+</li>
+<li>STBI_grey
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">stb_image.h</a>
+</li>
+<li>STBI_grey_alpha
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">stb_image.h</a>
+</li>
+<li>stbi_hdr_to_ldr_gamma()
+: <a class="el" href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stb_image.h</a>
+</li>
+<li>stbi_hdr_to_ldr_scale()
+: <a class="el" href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stb_image.h</a>
+</li>
+<li>stbi_image_free()
+: <a class="el" href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stb_image.h</a>
+</li>
+<li>stbi_info()
+: <a class="el" href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stb_image.h</a>
+</li>
+<li>stbi_info_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stb_image.h</a>
+</li>
+<li>stbi_info_from_file()
+: <a class="el" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stb_image.h</a>
+</li>
+<li>stbi_info_from_memory()
+: <a class="el" href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stb_image.h</a>
+</li>
+<li>stbi_is_hdr()
+: <a class="el" href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_callbacks()
+: <a class="el" href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_file()
+: <a class="el" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_memory()
+: <a class="el" href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stb_image.h</a>
+</li>
+<li>stbi_ldr_to_hdr_gamma()
+: <a class="el" href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stb_image.h</a>
+</li>
+<li>stbi_ldr_to_hdr_scale()
+: <a class="el" href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stb_image.h</a>
+</li>
+<li>stbi_load()
+: <a class="el" href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stb_image.h</a>
+</li>
+<li>stbi_load_16()
+: <a class="el" href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stb_image.h</a>
+</li>
+<li>stbi_load_16_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stb_image.h</a>
+</li>
+<li>stbi_load_16_from_memory()
+: <a class="el" href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stb_image.h</a>
+</li>
+<li>stbi_load_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stb_image.h</a>
+</li>
+<li>stbi_load_from_file()
+: <a class="el" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stb_image.h</a>
+</li>
+<li>stbi_load_from_file_16()
+: <a class="el" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stb_image.h</a>
+</li>
+<li>stbi_load_from_memory()
+: <a class="el" href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stb_image.h</a>
+</li>
+<li>stbi_loadf()
+: <a class="el" href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_file()
+: <a class="el" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_memory()
+: <a class="el" href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stb_image.h</a>
+</li>
+<li>STBI_rgb
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">stb_image.h</a>
+</li>
+<li>STBI_rgb_alpha
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293">stb_image.h</a>
+</li>
+<li>stbi_set_flip_vertically_on_load()
+: <a class="el" href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stb_image.h</a>
+</li>
+<li>stbi_set_unpremultiply_on_load()
+: <a class="el" href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stb_image.h</a>
+</li>
+<li>stbi_uc
+: <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stb_image.h</a>
+</li>
+<li>stbi_us
+: <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stb_image.h</a>
+</li>
+<li>STBI_VERSION
+: <a class="el" href="stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_buffer()
+: <a class="el" href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc()
+: <a class="el" href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc_guesssize()
+: <a class="el" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc_guesssize_headerflag()
+: <a class="el" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_noheader_buffer()
+: <a class="el" href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_noheader_malloc()
+: <a class="el" href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stb_image.h</a>
+</li>
+<li>STBIDEF
+: <a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">stb_image.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
+<li>yLogDebug
+: <a class="el" href="logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f">logger.h</a>
+</li>
+<li>yLogError
+: <a class="el" href="logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d">logger.h</a>
+</li>
+<li>yLogFatal
+: <a class="el" href="logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e">logger.h</a>
+</li>
+<li>yLogger
+: <a class="el" href="logger_8h.html#a9055939896a9ae18d3a833c5023e98d1">logger.h</a>
+</li>
+<li>yLogInfo
+: <a class="el" href="logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d">logger.h</a>
+</li>
+<li>yLogWarning
+: <a class="el" href="logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a">logger.h</a>
</li>
</ul>
</div><!-- contents -->
@@ -124,7 +302,7 @@ $(document).ready(function(){initNavTree('globals.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/globals_defs.html b/globals_defs.html
index 31691483..be48bb91 100644
--- a/globals_defs.html
+++ b/globals_defs.html
@@ -77,7 +77,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
@@ -112,8 +115,35 @@ $(document).ready(function(){initNavTree('globals_defs.html','');});
<div class="contents">
&#160;<ul>
-<li>gLog
-: <a class="el" href="logger_8h.html#aade1a167159e476dee85a6a097cb7ccc">logger.h</a>
+<li>GLFW_INCLUDE_NONE
+: <a class="el" href="input_8h.html#a088324ad8995e3eb76024e3e79083d48">input.h</a>
+</li>
+<li>STB_IMAGE_IMPLEMENTATION
+: <a class="el" href="stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78">stb_image.cpp</a>
+</li>
+<li>STBI_VERSION
+: <a class="el" href="stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa">stb_image.h</a>
+</li>
+<li>STBIDEF
+: <a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">stb_image.h</a>
+</li>
+<li>yLogDebug
+: <a class="el" href="logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f">logger.h</a>
+</li>
+<li>yLogError
+: <a class="el" href="logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d">logger.h</a>
+</li>
+<li>yLogFatal
+: <a class="el" href="logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e">logger.h</a>
+</li>
+<li>yLogger
+: <a class="el" href="logger_8h.html#a9055939896a9ae18d3a833c5023e98d1">logger.h</a>
+</li>
+<li>yLogInfo
+: <a class="el" href="logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d">logger.h</a>
+</li>
+<li>yLogWarning
+: <a class="el" href="logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a">logger.h</a>
</li>
</ul>
</div><!-- contents -->
@@ -121,7 +151,7 @@ $(document).ready(function(){initNavTree('globals_defs.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/globals_eval.html b/globals_eval.html
new file mode 100644
index 00000000..43c6ba69
--- /dev/null
+++ b/globals_eval.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Macros</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_eval.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>STBI_default
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029">stb_image.h</a>
+</li>
+<li>STBI_grey
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">stb_image.h</a>
+</li>
+<li>STBI_grey_alpha
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">stb_image.h</a>
+</li>
+<li>STBI_rgb
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">stb_image.h</a>
+</li>
+<li>STBI_rgb_alpha
+: <a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293">stb_image.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/globals_func.html b/globals_func.html
new file mode 100644
index 00000000..4b6956f7
--- /dev/null
+++ b/globals_func.html
@@ -0,0 +1,242 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Macros</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li class="current"><a href="#index_s"><span>s</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_func.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>stbi_convert_iphone_png_to_rgb()
+: <a class="el" href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stb_image.h</a>
+</li>
+<li>stbi_failure_reason()
+: <a class="el" href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stb_image.h</a>
+</li>
+<li>stbi_hdr_to_ldr_gamma()
+: <a class="el" href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stb_image.h</a>
+</li>
+<li>stbi_hdr_to_ldr_scale()
+: <a class="el" href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stb_image.h</a>
+</li>
+<li>stbi_image_free()
+: <a class="el" href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stb_image.h</a>
+</li>
+<li>stbi_info()
+: <a class="el" href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stb_image.h</a>
+</li>
+<li>stbi_info_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stb_image.h</a>
+</li>
+<li>stbi_info_from_file()
+: <a class="el" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stb_image.h</a>
+</li>
+<li>stbi_info_from_memory()
+: <a class="el" href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stb_image.h</a>
+</li>
+<li>stbi_is_hdr()
+: <a class="el" href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_callbacks()
+: <a class="el" href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_file()
+: <a class="el" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stb_image.h</a>
+</li>
+<li>stbi_is_hdr_from_memory()
+: <a class="el" href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stb_image.h</a>
+</li>
+<li>stbi_ldr_to_hdr_gamma()
+: <a class="el" href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stb_image.h</a>
+</li>
+<li>stbi_ldr_to_hdr_scale()
+: <a class="el" href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stb_image.h</a>
+</li>
+<li>stbi_load()
+: <a class="el" href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stb_image.h</a>
+</li>
+<li>stbi_load_16()
+: <a class="el" href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stb_image.h</a>
+</li>
+<li>stbi_load_16_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stb_image.h</a>
+</li>
+<li>stbi_load_16_from_memory()
+: <a class="el" href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stb_image.h</a>
+</li>
+<li>stbi_load_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stb_image.h</a>
+</li>
+<li>stbi_load_from_file()
+: <a class="el" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stb_image.h</a>
+</li>
+<li>stbi_load_from_file_16()
+: <a class="el" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stb_image.h</a>
+</li>
+<li>stbi_load_from_memory()
+: <a class="el" href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stb_image.h</a>
+</li>
+<li>stbi_loadf()
+: <a class="el" href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_callbacks()
+: <a class="el" href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_file()
+: <a class="el" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stb_image.h</a>
+</li>
+<li>stbi_loadf_from_memory()
+: <a class="el" href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stb_image.h</a>
+</li>
+<li>stbi_set_flip_vertically_on_load()
+: <a class="el" href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stb_image.h</a>
+</li>
+<li>stbi_set_unpremultiply_on_load()
+: <a class="el" href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_buffer()
+: <a class="el" href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc()
+: <a class="el" href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc_guesssize()
+: <a class="el" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_malloc_guesssize_headerflag()
+: <a class="el" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_noheader_buffer()
+: <a class="el" href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stb_image.h</a>
+</li>
+<li>stbi_zlib_decode_noheader_malloc()
+: <a class="el" href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stb_image.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/globals_type.html b/globals_type.html
new file mode 100644
index 00000000..c189c3f7
--- /dev/null
+++ b/globals_type.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Macros</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_type.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>stbi_uc
+: <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stb_image.h</a>
+</li>
+<li>stbi_us
+: <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stb_image.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/globals_vars.html b/globals_vars.html
index 6af7169b..2ac43d12 100644
--- a/globals_vars.html
+++ b/globals_vars.html
@@ -77,7 +77,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
<li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
@@ -121,7 +124,7 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/glslprogram_8h_source.html b/glslprogram_8h_source.html
deleted file mode 100644
index cfc37006..00000000
--- a/glslprogram_8h_source.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/glslprogram.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">YAGE
- &#160;<span id="projectnumber">v0.1.3.0</span>
- </div>
- <div id="projectbrief">Yet Another Game Engine</div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Classes</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>File&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('glslprogram_8h_source.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">glslprogram.h</div> </div>
-</div><!--header-->
-<div class="contents">
-<a href="glslprogram_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef GLSL_PROGRAM_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define GLSL_PROGRAM_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classyage_1_1GlslProgram.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">GlslProgram</a>() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">GlslProgram</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">GlslProgram</a>(<a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">~GlslProgram</a>();</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;<a class="code" href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;<a class="code" href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">operator=</a>(<a class="code" href="classyage_1_1GlslProgram.html">GlslProgram</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">compileShaders</a>(<span class="keyword">const</span> std::string &amp;vertexShader,</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> std::string fragmentShader);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">compileShadersFromFile</a>(<span class="keyword">const</span> std::string &amp;vertex_shader_path,</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> std::string &amp;fragment_shader_path);</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">linkShaders</a>();</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">addAttribute</a>(<span class="keyword">const</span> std::string &amp;attribute_name);</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; GLint <a class="code" href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">getUniformLocation</a>(<span class="keyword">const</span> std::string &amp;uniform_name);</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">use</a>();</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">unuse</a>();</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">defaultSetup</a>();</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b"> 45</a></span>&#160; GLuint <a class="code" href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">program_id_</a> = 0;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7"> 46</a></span>&#160; GLuint <a class="code" href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">vertex_shader_id_</a> = 0;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f"> 47</a></span>&#160; GLuint <a class="code" href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">fragment_shader_id_</a> = 0;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486"> 48</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">attribute_index_</a> = 0;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">compileShader</a>(GLuint shader, <span class="keyword">const</span> std::string &amp;shaderContent);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">compileShaderFromFile</a>(GLuint shader, <span class="keyword">const</span> std::string &amp;file_path);</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">initShaderId</a>();</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_aa97d015c12b29a4ccf5f3fe75a33db5c"><div class="ttname"><a href="classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c">yage::GlslProgram::compileShaders</a></div><div class="ttdeci">void compileShaders(const std::string &amp;vertexShader, const std::string fragmentShader)</div><div class="ttdoc">compiles vertex and fragment shader </div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:104</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a2afa98cbf5d25b634e01b863c33fcf8f"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f">yage::GlslProgram::unuse</a></div><div class="ttdeci">void unuse()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:180</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a55d4f797833c688be78c00882112e486"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486">yage::GlslProgram::attribute_index_</a></div><div class="ttdeci">int attribute_index_</div><div class="ttdef"><b>Definition:</b> glslprogram.h:48</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_aff700034b2742769a0869944948dc430"><div class="ttname"><a href="classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430">yage::GlslProgram::compileShadersFromFile</a></div><div class="ttdeci">void compileShadersFromFile(const std::string &amp;vertex_shader_path, const std::string &amp;fragment_shader_path)</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:113</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html"><div class="ttname"><a href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></div><div class="ttdef"><b>Definition:</b> glslprogram.h:19</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a07a4484f76091689c35a8f7617b7c2e6"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6">yage::GlslProgram::compileShaderFromFile</a></div><div class="ttdeci">void compileShaderFromFile(GLuint shader, const std::string &amp;file_path)</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:66</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a43838529286cfc954ef2db3229274dd9"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9">yage::GlslProgram::initShaderId</a></div><div class="ttdeci">void initShaderId()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:86</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a45676c850afad2717fd4119eb8c02ef7"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7">yage::GlslProgram::~GlslProgram</a></div><div class="ttdeci">~GlslProgram()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:18</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a721b43cbdf82dbf68b3a4f3304a135c4"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4">yage::GlslProgram::GlslProgram</a></div><div class="ttdeci">GlslProgram()=default</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a7f566bb89d01dbdeea4e034b36bf7cd4"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4">yage::GlslProgram::compileShader</a></div><div class="ttdeci">void compileShader(GLuint shader, const std::string &amp;shaderContent)</div><div class="ttdoc">compiles one shader </div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:34</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_ad8f02beee9fdc3608d7aceebf3398e8b"><div class="ttname"><a href="classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b">yage::GlslProgram::program_id_</a></div><div class="ttdeci">GLuint program_id_</div><div class="ttdoc">compiled shader program id </div><div class="ttdef"><b>Definition:</b> glslprogram.h:45</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a1260a2302c1434ce38c850dc18cbc04e"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e">yage::GlslProgram::defaultSetup</a></div><div class="ttdeci">void defaultSetup()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:188</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_aed74ec6db4d2b02e1172bd5694eb1b27"><div class="ttname"><a href="classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27">yage::GlslProgram::linkShaders</a></div><div class="ttdeci">void linkShaders()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:124</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_ad20ee225c8e981861923a2d7eeaf940f"><div class="ttname"><a href="classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f">yage::GlslProgram::fragment_shader_id_</a></div><div class="ttdeci">GLuint fragment_shader_id_</div><div class="ttdef"><b>Definition:</b> glslprogram.h:47</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a4e38b9f5daaf4b111b69e4d2900d4970"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970">yage::GlslProgram::addAttribute</a></div><div class="ttdeci">void addAttribute(const std::string &amp;attribute_name)</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:157</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a762b44540ef219ff39f784543fc162c3"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3">yage::GlslProgram::use</a></div><div class="ttdeci">void use()</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:172</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_afe46af121e9c0214be6f7b18660c5bc7"><div class="ttname"><a href="classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7">yage::GlslProgram::vertex_shader_id_</a></div><div class="ttdeci">GLuint vertex_shader_id_</div><div class="ttdef"><b>Definition:</b> glslprogram.h:46</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a5af953324ac9f89aecf7e0a73a9467ad"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad">yage::GlslProgram::operator=</a></div><div class="ttdeci">GlslProgram &amp; operator=(const GlslProgram &amp;)=delete</div></div>
-<div class="ttc" id="classyage_1_1GlslProgram_html_a255ccbb1d94d17f2de62319efd4be91d"><div class="ttname"><a href="classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d">yage::GlslProgram::getUniformLocation</a></div><div class="ttdeci">GLint getUniformLocation(const std::string &amp;uniform_name)</div><div class="ttdef"><b>Definition:</b> glslprogram.cpp:163</div></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="glslprogram_8h.html">glslprogram.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/hierarchy.html b/hierarchy.html
index a0ec5eac..745fbb06 100644
--- a/hierarchy.html
+++ b/hierarchy.html
@@ -113,52 +113,55 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Active.html" target="_self">yage::Active</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img id="arr_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Body.html" target="_self">yage::Body</a></td><td class="desc"></td></tr>
-<tr id="row_1_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1CollisionBody.html" target="_self">yage::CollisionBody</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ParticleBody.html" target="_self">yage::ParticleBody</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RigidBody.html" target="_self">yage::RigidBody</a></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Camera.html" target="_self">yage::Camera</a></td><td class="desc"></td></tr>
-<tr id="row_3_" class="even"><td class="entry"><img id="arr_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Collider.html" target="_self">yage::Collider</a></td><td class="desc"></td></tr>
-<tr id="row_3_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RectangleCollider.html" target="_self">yage::RectangleCollider</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Colour.html" target="_self">yage::Colour</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img id="arr_5_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogSink_1_1Concept.html" target="_self">yage::LogSink::Concept</a></td><td class="desc"></td></tr>
-<tr id="row_5_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogSink_1_1Model.html" target="_self">yage::LogSink::Model&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_6_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1Coordinate.html" target="_self">yage::details::Coordinate</a></td><td class="desc"></td></tr>
-<tr id="row_7_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1GlslProgram.html" target="_self">yage::GlslProgram</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Glyph.html" target="_self">yage::Glyph</a></td><td class="desc"><a class="el" href="classyage_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture </td></tr>
-<tr id="row_9_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ImageLoader.html" target="_self">yage::ImageLoader</a></td><td class="desc"></td></tr>
-<tr id="row_10_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1IoManager.html" target="_self">yage::IoManager</a></td><td class="desc"></td></tr>
-<tr id="row_11_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Logger.html" target="_self">yage::Logger</a></td><td class="desc"></td></tr>
-<tr id="row_12_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classLogLevel.html" target="_self">LogLevel</a></td><td class="desc"></td></tr>
-<tr id="row_13_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogMessage.html" target="_self">yage::LogMessage</a></td><td class="desc"></td></tr>
-<tr id="row_14_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogSink.html" target="_self">yage::LogSink</a></td><td class="desc"></td></tr>
-<tr id="row_15_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, Cols, Type &gt;</a></td><td class="desc">Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes </td></tr>
-<tr id="row_16_"><td class="entry"><img id="arr_16_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, 1, double &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_16_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_16_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('16_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 2, double &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_16_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">yage::Vector2&lt; double &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_" class="even"><td class="entry"><img id="arr_17_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, 1, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_17_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 2, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_0_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">yage::Vector2&lt; Type &gt;</a></td><td class="desc">2D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_17_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_17_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 3, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_1_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector3.html" target="_self">yage::Vector3&lt; Type &gt;</a></td><td class="desc">3D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_17_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_17_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 4, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_2_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector4.html" target="_self">yage::Vector4&lt; Type &gt;</a></td><td class="desc">4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
-<tr id="row_17_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; Rows, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogMessage_1_1Meta.html" target="_self">yage::LogMessage::Meta</a></td><td class="desc"></td></tr>
-<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Position.html" target="_self">yage::Position</a></td><td class="desc"></td></tr>
-<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RenderBatch.html" target="_self">yage::RenderBatch</a></td><td class="desc"></td></tr>
-<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ResourceManager.html" target="_self">yage::ResourceManager</a></td><td class="desc"></td></tr>
-<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1details_1_1Row.html" target="_self">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Sprite.html" target="_self">yage::Sprite</a></td><td class="desc"></td></tr>
-<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteBatch.html" target="_self">yage::SpriteBatch</a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteSheet.html" target="_self">yage::SpriteSheet</a></td><td class="desc"></td></tr>
-<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">yage::SyncQueue&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">yage::SyncQueue&lt; Callback &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Texture.html" target="_self">yage::Texture</a></td><td class="desc"></td></tr>
-<tr id="row_29_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1TextureCache.html" target="_self">yage::TextureCache</a></td><td class="desc"></td></tr>
-<tr id="row_30_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1UV.html" target="_self">yage::UV</a></td><td class="desc"></td></tr>
-<tr id="row_31_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Vertex.html" target="_self">yage::Vertex</a></td><td class="desc"></td></tr>
-<tr id="row_32_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Window.html" target="_self">yage::Window</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Batch.html" target="_self">yage::Batch</a></td><td class="desc">Will be the base class for all the different batching processes that might use different shaders and attributes </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img id="arr_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Body.html" target="_self">yage::Body</a></td><td class="desc"></td></tr>
+<tr id="row_2_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1CollisionBody.html" target="_self">yage::CollisionBody</a></td><td class="desc"></td></tr>
+<tr id="row_2_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_1_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('2_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ParticleBody.html" target="_self">yage::ParticleBody</a></td><td class="desc"></td></tr>
+<tr id="row_2_1_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RigidBody.html" target="_self">yage::RigidBody</a></td><td class="desc"></td></tr>
+<tr id="row_3_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Camera.html" target="_self">yage::Camera</a></td><td class="desc"></td></tr>
+<tr id="row_4_"><td class="entry"><img id="arr_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Collider.html" target="_self">yage::Collider</a></td><td class="desc"></td></tr>
+<tr id="row_4_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1RectangleCollider.html" target="_self">yage::RectangleCollider</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Colour.html" target="_self">yage::Colour</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1Coordinate.html" target="_self">yage::details::Coordinate</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Drawable.html" target="_self">yage::Drawable</a></td><td class="desc"></td></tr>
+<tr id="row_7_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_7_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('7_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Shape.html" target="_self">yage::Shape</a></td><td class="desc"></td></tr>
+<tr id="row_7_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Rectangle.html" target="_self">yage::Rectangle</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1Glyph.html" target="_self">yage::details::Glyph</a></td><td class="desc"><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture </td></tr>
+<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ImageLoader.html" target="_self">yage::ImageLoader</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1IoManager.html" target="_self">yage::IoManager</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Logger.html" target="_self">yage::Logger</a></td><td class="desc"><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+</td></tr>
+<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogMessage.html" target="_self">yage::LogMessage</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1LogSink.html" target="_self">yage::LogSink</a></td><td class="desc"></td></tr>
+<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, Cols, Type &gt;</a></td><td class="desc">Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes </td></tr>
+<tr id="row_15_"><td class="entry"><img id="arr_15_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('15_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, 1, double &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_15_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_15_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('15_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 2, double &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_15_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">yage::Vector2&lt; double &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_16_" class="even"><td class="entry"><img id="arr_16_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Matrix.html" target="_self">yage::Matrix&lt; Rows, 1, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_16_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_16_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 2, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_16_0_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector2.html" target="_self">yage::Vector2&lt; Type &gt;</a></td><td class="desc">2D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_16_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_16_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 3, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_16_1_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector3.html" target="_self">yage::Vector3&lt; Type &gt;</a></td><td class="desc">3D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_16_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_16_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; 4, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_16_2_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector4.html" target="_self">yage::Vector4&lt; Type &gt;</a></td><td class="desc">4D <a class="el" href="classyage_1_1Vector.html">Vector</a> class </td></tr>
+<tr id="row_16_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Vector.html" target="_self">yage::Vector&lt; Rows, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_17_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1LogMessage_1_1Meta.html" target="_self">yage::LogMessage::Meta</a></td><td class="desc"></td></tr>
+<tr id="row_18_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Position.html" target="_self">yage::Position</a></td><td class="desc"></td></tr>
+<tr id="row_19_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1details_1_1RenderBatch.html" target="_self">yage::details::RenderBatch</a></td><td class="desc"></td></tr>
+<tr id="row_20_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1ResourceManager.html" target="_self">yage::ResourceManager</a></td><td class="desc"></td></tr>
+<tr id="row_21_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1details_1_1Row.html" target="_self">yage::details::Row&lt; Rows, Cols, Type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_22_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Shader.html" target="_self">yage::Shader</a></td><td class="desc"></td></tr>
+<tr id="row_23_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Sprite.html" target="_self">yage::Sprite</a></td><td class="desc"></td></tr>
+<tr id="row_24_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteBatch.html" target="_self">yage::SpriteBatch</a></td><td class="desc"></td></tr>
+<tr id="row_25_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SpriteSheet.html" target="_self">yage::SpriteSheet</a></td><td class="desc"></td></tr>
+<tr id="row_26_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structstbi__io__callbacks.html" target="_self">stbi_io_callbacks</a></td><td class="desc"></td></tr>
+<tr id="row_27_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">yage::SyncQueue&lt; T &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_28_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1SyncQueue.html" target="_self">yage::SyncQueue&lt; Callback &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_29_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Texture.html" target="_self">yage::Texture</a></td><td class="desc"></td></tr>
+<tr id="row_30_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1TextureCache.html" target="_self">yage::TextureCache</a></td><td class="desc"></td></tr>
+<tr id="row_31_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1UV.html" target="_self">yage::UV</a></td><td class="desc"></td></tr>
+<tr id="row_32_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structyage_1_1Vertex.html" target="_self">yage::Vertex</a></td><td class="desc"></td></tr>
+<tr id="row_33_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classyage_1_1Window.html" target="_self">yage::Window</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
@@ -166,7 +169,7 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/hierarchy.js b/hierarchy.js
index 52536d8f..b42d6759 100644
--- a/hierarchy.js
+++ b/hierarchy.js
@@ -1,6 +1,7 @@
var hierarchy =
[
[ "yage::Active", "classyage_1_1Active.html", null ],
+ [ "yage::Batch", "classyage_1_1Batch.html", null ],
[ "yage::Body", "classyage_1_1Body.html", [
[ "yage::CollisionBody", "classyage_1_1CollisionBody.html", null ],
[ "yage::ParticleBody", "classyage_1_1ParticleBody.html", [
@@ -12,16 +13,16 @@ var hierarchy =
[ "yage::RectangleCollider", "classyage_1_1RectangleCollider.html", null ]
] ],
[ "yage::Colour", "structyage_1_1Colour.html", null ],
- [ "yage::LogSink::Concept", "structyage_1_1LogSink_1_1Concept.html", [
- [ "yage::LogSink::Model< T >", "structyage_1_1LogSink_1_1Model.html", null ]
- ] ],
[ "yage::details::Coordinate", "structyage_1_1details_1_1Coordinate.html", null ],
- [ "yage::GlslProgram", "classyage_1_1GlslProgram.html", null ],
- [ "yage::Glyph", "classyage_1_1Glyph.html", null ],
+ [ "yage::Drawable", "classyage_1_1Drawable.html", [
+ [ "yage::Shape", "classyage_1_1Shape.html", [
+ [ "yage::Rectangle", "classyage_1_1Rectangle.html", null ]
+ ] ]
+ ] ],
+ [ "yage::details::Glyph", "structyage_1_1details_1_1Glyph.html", null ],
[ "yage::ImageLoader", "classyage_1_1ImageLoader.html", null ],
[ "yage::IoManager", "classyage_1_1IoManager.html", null ],
[ "yage::Logger", "classyage_1_1Logger.html", null ],
- [ "LogLevel", "classLogLevel.html", null ],
[ "yage::LogMessage", "classyage_1_1LogMessage.html", null ],
[ "yage::LogSink", "classyage_1_1LogSink.html", null ],
[ "yage::Matrix< Rows, Cols, Type >", "classyage_1_1Matrix.html", null ],
@@ -44,12 +45,14 @@ var hierarchy =
] ],
[ "yage::LogMessage::Meta", "structyage_1_1LogMessage_1_1Meta.html", null ],
[ "yage::Position", "structyage_1_1Position.html", null ],
- [ "yage::RenderBatch", "classyage_1_1RenderBatch.html", null ],
+ [ "yage::details::RenderBatch", "structyage_1_1details_1_1RenderBatch.html", null ],
[ "yage::ResourceManager", "classyage_1_1ResourceManager.html", null ],
[ "yage::details::Row< Rows, Cols, Type >", "classyage_1_1details_1_1Row.html", null ],
+ [ "yage::Shader", "classyage_1_1Shader.html", null ],
[ "yage::Sprite", "classyage_1_1Sprite.html", null ],
[ "yage::SpriteBatch", "classyage_1_1SpriteBatch.html", null ],
[ "yage::SpriteSheet", "classyage_1_1SpriteSheet.html", null ],
+ [ "stbi_io_callbacks", "structstbi__io__callbacks.html", null ],
[ "yage::SyncQueue< T >", "classyage_1_1SyncQueue.html", null ],
[ "yage::SyncQueue< Callback >", "classyage_1_1SyncQueue.html", null ],
[ "yage::Texture", "structyage_1_1Texture.html", null ],
diff --git a/imageloader_8cpp.html b/imageloader_8cpp.html
index b9941742..1f76c197 100644
--- a/imageloader_8cpp.html
+++ b/imageloader_8cpp.html
@@ -115,10 +115,10 @@ $(document).ready(function(){initNavTree('imageloader_8cpp.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="imageloader_8h_source.html">imageloader.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="logger_8h_source.html">logger.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="stb__image_8h_source.html">stb_image.h</a>&quot;</code><br/>
<code>#include &lt;glad/glad.h&gt;</code><br/>
-<code>#include &lt;<a class="el" href="iomanager_8h_source.html">yage/core/iomanager.h</a>&gt;</code><br/>
-<code>#include &lt;<a class="el" href="picopng_8h_source.html">yage/core/picopng.h</a>&gt;</code><br/>
<code>#include &lt;iostream&gt;</code><br/>
<code>#include &lt;stdexcept&gt;</code><br/>
</div><table class="memberdecls">
@@ -129,7 +129,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -137,7 +138,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="imageloader_8cpp.html">imageloader.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/imageloader_8h.html b/imageloader_8h.html
index e6c88117..41ec3a64 100644
--- a/imageloader_8h.html
+++ b/imageloader_8h.html
@@ -131,7 +131,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -139,7 +140,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="imageloader_8h.html">imageloader.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/imageloader_8h_source.html b/imageloader_8h_source.html
index e7b7486c..8bbaa793 100644
--- a/imageloader_8h_source.html
+++ b/imageloader_8h_source.html
@@ -137,7 +137,7 @@ $(document).ready(function(){initNavTree('imageloader_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="imageloader_8h.html">imageloader.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/index.html b/index.html
index 58bdaccf..7514421b 100644
--- a/index.html
+++ b/index.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('index.html','');});
<h2>Installation and usage </h2>
<p>To use YAGE for your own game, you should link it as a static library and include the <a href="/include/YAGE/yage.h">yage.h</a> header in your project. To link the project using cmake, the library has to be added as a subdirectory and then linked with the name <code>yage</code>.</p>
<h2>Build and Testing </h2>
-<p>To compile YAGE, create a build directory from the base directory. Then call cmake and point it to the directory containing. <a href="/CMakeLists.txt">CMakeLists.txt</a>. For example, one can use the following commands</p>
+<p>To compile YAGE, create a build directory from the base dirqectory. Then call cmake and point it to the directory containing. <a href="/CMakeLists.txt">CMakeLists.txt</a>. For example, one can use the following commands</p>
<p>``` shell mkdir -p build cd build cmake .. ```</p>
<p>The test suite can then be run using</p>
<p>``` shell cd build/tests &amp;&amp; ctest ```</p>
@@ -123,7 +123,7 @@ $(document).ready(function(){initNavTree('index.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/input_8h.html b/input_8h.html
index 3e97ecd2..f3b2822d 100644
--- a/input_8h.html
+++ b/input_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/input.h File Reference</title>
+<title>YAGE: yage/data/input.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -106,6 +106,7 @@ $(document).ready(function(){initNavTree('input_8h.html','');});
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
+<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">input.h File Reference</div> </div>
@@ -125,6 +126,11 @@ Namespaces</h2></td></tr>
<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a088324ad8995e3eb76024e3e79083d48"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="input_8h.html#a088324ad8995e3eb76024e3e79083d48">GLFW_INCLUDE_NONE</a></td></tr>
+<tr class="separator:a088324ad8995e3eb76024e3e79083d48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ad5a9307442e5daa8810aff942564a822"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage::key</a> { <br/>
@@ -285,15 +291,29 @@ Enumerations</h2></td></tr>
<tr class="separator:ad5a9307442e5daa8810aff942564a822"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
-</div></div><!-- contents -->
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a088324ad8995e3eb76024e3e79083d48"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_INCLUDE_NONE</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="input_8h.html">input.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="input_8h.html">input.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/input_8h.js b/input_8h.js
index 6509294b..01947691 100644
--- a/input_8h.js
+++ b/input_8h.js
@@ -1,5 +1,6 @@
var input_8h =
[
+ [ "GLFW_INCLUDE_NONE", "input_8h.html#a088324ad8995e3eb76024e3e79083d48", null ],
[ "key", "input_8h.html#ad5a9307442e5daa8810aff942564a822", [
[ "UNKNOWN", "input_8h.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3", null ],
[ "SPACE", "input_8h.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57", null ],
diff --git a/input_8h_source.html b/input_8h_source.html
index e0ff7824..e69b1467 100644
--- a/input_8h_source.html
+++ b/input_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/input.h Source File</title>
+<title>YAGE: yage/data/input.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -112,145 +112,146 @@ $(document).ready(function(){initNavTree('input_8h_source.html','');});
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_INPUT_H</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_INPUT_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822"> 17</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a> {</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="comment">// unknown key</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a> = GLFW_KEY_UNKNOWN,</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="comment">// actual keys</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57">SPACE</a> = GLFW_KEY_SPACE,</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9df35983f4024e31955de0f1e545e888">APOSTROPHE</a> = GLFW_KEY_APOSTROPHE, <span class="comment">/* &#39; */</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4d9b3e9fc12849d060371eb65154c751">COMMA</a> = GLFW_KEY_COMMA, <span class="comment">/* , */</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affc0d9b54a1fe677c4c9e6b050e67c81">MINUS</a> = GLFW_KEY_MINUS, <span class="comment">/* - */</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ade58a28573783fe95304a260ccd90362">PERIOD</a> = GLFW_KEY_PERIOD, <span class="comment">/* . */</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e">SLASH</a> = GLFW_KEY_SLASH, <span class="comment">/* / */</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a22517dfceb401f35b1b59999ba74c700">NUM0</a> = GLFW_KEY_0,</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a71ddb986230a88155bf74e65f644dda4">NUM1</a> = GLFW_KEY_1,</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a78232351eaf00755d136afad0745157b">NUM2</a> = GLFW_KEY_2,</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acf6d2dfd5fb43f33ec09dbad7a90593c">NUM3</a> = GLFW_KEY_3,</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abb4e75dde7d107cc573c77dc42a7acab">NUM4</a> = GLFW_KEY_4,</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6e2e9ebea6f89bc9235928b0794bc261">NUM5</a> = GLFW_KEY_5,</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aa8ecc4d78b0864cd22b788de2b48921f">NUM6</a> = GLFW_KEY_6,</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a65d3215a061ffc8962994cdf549e31e4">NUM7</a> = GLFW_KEY_7,</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac63bd90003103ca242fe9202fe10c3e9">NUM8</a> = GLFW_KEY_8,</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abb2cbd684a16faa1624ae1b3a4ceaa2c">NUM9</a> = GLFW_KEY_9,</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5">SEMICOLON</a> = GLFW_KEY_SEMICOLON, <span class="comment">/* ; */</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44">EQUAL</a> = GLFW_KEY_EQUAL, <span class="comment">/* = */</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7fc56270e7a70fa81a5935b72eacbe29">A</a> = GLFW_KEY_A,</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9d5ed678fe57bcca610140957afab571">B</a> = GLFW_KEY_B,</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a0d61f8370cad1d412f80b84d143e1257">C</a> = GLFW_KEY_C,</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5">D</a> = GLFW_KEY_D,</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a3ea00cfc35332cedf6e5e9a32e94da">E</a> = GLFW_KEY_E,</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a800618943025315f869e4e1f09471012">F</a> = GLFW_KEY_F,</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adfcf28d0734569a6a693bc8194de62bf">G</a> = GLFW_KEY_G,</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac1d9f50f86825a1a2302ec2449c17196">H</a> = GLFW_KEY_H,</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f">I</a> = GLFW_KEY_I,</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aff44570aca8241914870afbc310cdb85">J</a> = GLFW_KEY_J,</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aa5f3c6a11b03839d46af9fb43c97c188">K</a> = GLFW_KEY_K,</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587">L</a> = GLFW_KEY_L,</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a69691c7bdcc3ce6d5d8a1361f22d04ac">M</a> = GLFW_KEY_M,</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a8d9c307cb7f3c4a32822a51922d1ceaa">N</a> = GLFW_KEY_N,</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af186217753c37b9b9f958d906208506e">O</a> = GLFW_KEY_O,</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a44c29edb103a2872f519ad0c9a0fdaaa">P</a> = GLFW_KEY_P,</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee">Q</a> = GLFW_KEY_Q,</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6">R</a> = GLFW_KEY_R,</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e">S</a> = GLFW_KEY_S,</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> = GLFW_KEY_T,</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb">U</a> = GLFW_KEY_U,</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5206560a306a2e085a437fd258eb57ce">V</a> = GLFW_KEY_V,</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276">W</a> = GLFW_KEY_W,</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383">X</a> = GLFW_KEY_X,</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0">Y</a> = GLFW_KEY_Y,</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5">Z</a> = GLFW_KEY_Z,</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a91a9360a45bb242906ee86ecbf9ac7c4">LEfT_BRACKET</a> = GLFW_KEY_LEFT_BRACKET, <span class="comment">/* [ */</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aecb4a6f3440c2ed0dff59f17375a27c0">BACKSLASH</a> = GLFW_KEY_BACKSLASH, <span class="comment">/* \ */</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a91d8d0b84f26c3e30fb064ea4fc1090f">RIGHT_BRACKET</a> = GLFW_KEY_RIGHT_BRACKET, <span class="comment">/* ] */</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1547ad05c44be2cc614be32159bf666b">GRAVE_ACCENT</a> = GLFW_KEY_GRAVE_ACCENT, <span class="comment">/* ` */</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566">WORLD_1</a> = GLFW_KEY_WORLD_1, <span class="comment">/* non-US #1 */</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22">WORLD_2</a> = GLFW_KEY_WORLD_2, <span class="comment">/* non-US #2 */</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// function keys</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d">ESCAPE</a> = GLFW_KEY_ESCAPE,</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13">ENTER</a> = GLFW_KEY_ENTER,</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af684bf05fa3e81528c84d1d281d839f1">TAB</a> = GLFW_KEY_TAB,</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6f5d8e41084b4d3d47fa621c459eede1">BACKSPACE</a> = GLFW_KEY_BACKSPACE,</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b">INSERT</a> = GLFW_KEY_INSERT,</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e">DELETE</a> = GLFW_KEY_DELETE,</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21507b40c80068eda19865706fdc2403">RIGHT</a> = GLFW_KEY_RIGHT,</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a684d325a7303f52e64011467ff5c5758">LEFT</a> = GLFW_KEY_LEFT,</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f">DOWN</a> = GLFW_KEY_DOWN,</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afbaedde498cdead4f2780217646e9ba1">UP</a> = GLFW_KEY_UP,</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae791d936f894ce58dd18bf603edcb9b4">PAGE_UP</a> = GLFW_KEY_PAGE_UP,</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae9a23c5ce3d34b40123d65ca14b2e88f">PAGE_DOWN</a> = GLFW_KEY_PAGE_DOWN,</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a710533dd879dd1202e5c73b27705bf02">HOME</a> = GLFW_KEY_HOME,</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905">END</a> = GLFW_KEY_END,</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae40af1d5cc55c55ae0bb25953f7a7ee2">CAPS_LOCK</a> = GLFW_KEY_CAPS_LOCK,</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed">SCROLL_LOCK</a> = GLFW_KEY_SCROLL_LOCK,</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb0d0bf9279e78f982deba761110e434">NUM_LOCK</a> = GLFW_KEY_NUM_LOCK,</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a853f8ded7a96b5a765704974e6a3ca96">PRINT_SCREEN</a> = GLFW_KEY_PRINT_SCREEN,</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891">PAUSE</a> = GLFW_KEY_PAUSE,</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1dffc8709f31a4987c8a88334107e89">F1</a> = GLFW_KEY_F1,</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afe5c3684dce76cdd9f7f42430868aa74">F2</a> = GLFW_KEY_F2,</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4b6bf4b531770872d4328ce69bef5627">F3</a> = GLFW_KEY_F3,</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae7e0e72401a9f2718ed0f39f2861d702">F4</a> = GLFW_KEY_F4,</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a37f438df6a6d5ba4c17ef8ca58562f00">F5</a> = GLFW_KEY_F5,</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1faf42f2823f184eb2c9f0dffe5d73f2">F6</a> = GLFW_KEY_F6,</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839">F7</a> = GLFW_KEY_F7,</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7">F8</a> = GLFW_KEY_F8,</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9">F9</a> = GLFW_KEY_F9,</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab213ce22ca6ad4eda8db82966b9b6e5a">F10</a> = GLFW_KEY_F10,</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a643b0662422d1d0dffa3fca2e2bf28a8">F11</a> = GLFW_KEY_F11,</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae902674982fc99aa343cdd94da7476c3">F12</a> = GLFW_KEY_F12,</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a95dfde4807d4d6a9eec499203b3c24a0">F13</a> = GLFW_KEY_F13,</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2468649b6215c4cdd2aef5095b3f5932">F14</a> = GLFW_KEY_F14,</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae53b55851b9ff4979f2c3ff434a4a138">F15</a> = GLFW_KEY_F15,</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a56d8353718e6fdc78b8d69078a2cdb94">F16</a> = GLFW_KEY_F16,</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affa5882d1ddcf903bf0d0dbc30bfc604">F17</a> = GLFW_KEY_F17,</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a810b30cdfc07fd7fff553a94b828ff78">F18</a> = GLFW_KEY_F18,</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acd7c2a221ef5d0a34acc0bcd679b2054">F19</a> = GLFW_KEY_F19,</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afc335adb3d69d3d8270769e1923ea4dc">F20</a> = GLFW_KEY_F20,</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a77e9eee7c579eef5f3731ecf1053c02e">F21</a> = GLFW_KEY_F21,</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7fa06ead699fcbd63132370ffe13335a">F22</a> = GLFW_KEY_F22,</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a889645d530078147e7dc69a9caadc31e">F23</a> = GLFW_KEY_F23,</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aebd7820c520d05eca2d775c37d141273">F24</a> = GLFW_KEY_F24,</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aabf9846f265ae3dea4bf9d740f5cb1aa">F25</a> = GLFW_KEY_F25,</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52">KP_0</a> = GLFW_KEY_KP_0,</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afdcbdc22f7e22388bf5905c290bcfe4b">KP_1</a> = GLFW_KEY_KP_1,</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2d0bfa737eccfce7842cd2230eed6712">KP_2</a> = GLFW_KEY_KP_2,</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a766b4a88cba7645629bac70fd01d8275">KP_3</a> = GLFW_KEY_KP_3,</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9c56f942b051ba23447e108e16a8b23b">KP_4</a> = GLFW_KEY_KP_4,</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adc271d081ca9fcbefdc42998313398d8">KP_5</a> = GLFW_KEY_KP_5,</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2091809ab6bdbc0a1975bf61d6099748">KP_6</a> = GLFW_KEY_KP_6,</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a71f42e8faf0fb7cb14174c8481461c00">KP_7</a> = GLFW_KEY_KP_7,</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a62e75b78c155e8549c5c5edb434a7757">KP_8</a> = GLFW_KEY_KP_8,</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3d548437292c0cd1662fc30d420f2c27">KP_9</a> = GLFW_KEY_KP_9,</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1a9c94725005bc4759507db8acc8da33">KP_DECIMAL</a> = GLFW_KEY_KP_DECIMAL,</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7c333963ed187368820c5343b355e5bc">KP_DIVIDE</a> = GLFW_KEY_KP_DIVIDE,</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2140df7839a3713724b35168defcc975">KP_MULTIPLY</a> = GLFW_KEY_KP_MULTIPLY,</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a17de1e647789892e1fb512bf04db4866">KP_SUBTRACT</a> = GLFW_KEY_KP_SUBTRACT,</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4">KP_ADD</a> = GLFW_KEY_KP_ADD,</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adea24610606fb34c587a8fe8ed8f8389">KP_ENTER</a> = GLFW_KEY_KP_ENTER,</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2cfe3b4f9911c5899d79f171d6b9cc4a">KP_EQUAL</a> = GLFW_KEY_KP_EQUAL,</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab6c7e6204e97690efd79d6f513ed5613">LEFT_SHIFT</a> = GLFW_KEY_LEFT_SHIFT,</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822addf133566f544b297f2f84874c283589">LEFT_CONTROL</a> = GLFW_KEY_LEFT_CONTROL,</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56">LEFT_ALT</a> = GLFW_KEY_LEFT_ALT,</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde">LEFT_SUPER</a> = GLFW_KEY_LEFT_SUPER,</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098">RIGHT_SHIFT</a> = GLFW_KEY_RIGHT_SHIFT,</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a80cdb34a10d276950f8b20b6814c9194">RIGHT_CONTROL</a> = GLFW_KEY_RIGHT_CONTROL,</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a0123827c03dce5d07ebd43bd649a1073">RIGHT_ALT</a> = GLFW_KEY_RIGHT_ALT,</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a8825bb5d58b44b72465799553acb964d">RIGHT_SUPER</a> = GLFW_KEY_RIGHT_SUPER,</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3ed53fbeb1eab0443561b68ca0c0b5cf">MENU</a> = GLFW_KEY_MENU,</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af447f5c03508de4d88e340390ba7c78f">LAST</a> = GLFW_KEY_LAST,</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;};</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;} <span class="comment">// namepsace yage</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="input_8h.html#a088324ad8995e3eb76024e3e79083d48"> 12</a></span>&#160;<span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822"> 18</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a> {</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="comment">// unknown key</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a> = GLFW_KEY_UNKNOWN,</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// actual keys</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57">SPACE</a> = GLFW_KEY_SPACE,</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9df35983f4024e31955de0f1e545e888">APOSTROPHE</a> = GLFW_KEY_APOSTROPHE, <span class="comment">/* &#39; */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4d9b3e9fc12849d060371eb65154c751">COMMA</a> = GLFW_KEY_COMMA, <span class="comment">/* , */</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affc0d9b54a1fe677c4c9e6b050e67c81">MINUS</a> = GLFW_KEY_MINUS, <span class="comment">/* - */</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ade58a28573783fe95304a260ccd90362">PERIOD</a> = GLFW_KEY_PERIOD, <span class="comment">/* . */</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e">SLASH</a> = GLFW_KEY_SLASH, <span class="comment">/* / */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a22517dfceb401f35b1b59999ba74c700">NUM0</a> = GLFW_KEY_0,</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a71ddb986230a88155bf74e65f644dda4">NUM1</a> = GLFW_KEY_1,</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a78232351eaf00755d136afad0745157b">NUM2</a> = GLFW_KEY_2,</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acf6d2dfd5fb43f33ec09dbad7a90593c">NUM3</a> = GLFW_KEY_3,</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abb4e75dde7d107cc573c77dc42a7acab">NUM4</a> = GLFW_KEY_4,</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6e2e9ebea6f89bc9235928b0794bc261">NUM5</a> = GLFW_KEY_5,</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aa8ecc4d78b0864cd22b788de2b48921f">NUM6</a> = GLFW_KEY_6,</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a65d3215a061ffc8962994cdf549e31e4">NUM7</a> = GLFW_KEY_7,</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac63bd90003103ca242fe9202fe10c3e9">NUM8</a> = GLFW_KEY_8,</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abb2cbd684a16faa1624ae1b3a4ceaa2c">NUM9</a> = GLFW_KEY_9,</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5">SEMICOLON</a> = GLFW_KEY_SEMICOLON, <span class="comment">/* ; */</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44">EQUAL</a> = GLFW_KEY_EQUAL, <span class="comment">/* = */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7fc56270e7a70fa81a5935b72eacbe29">A</a> = GLFW_KEY_A,</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9d5ed678fe57bcca610140957afab571">B</a> = GLFW_KEY_B,</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a0d61f8370cad1d412f80b84d143e1257">C</a> = GLFW_KEY_C,</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5">D</a> = GLFW_KEY_D,</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a3ea00cfc35332cedf6e5e9a32e94da">E</a> = GLFW_KEY_E,</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a800618943025315f869e4e1f09471012">F</a> = GLFW_KEY_F,</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adfcf28d0734569a6a693bc8194de62bf">G</a> = GLFW_KEY_G,</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac1d9f50f86825a1a2302ec2449c17196">H</a> = GLFW_KEY_H,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f">I</a> = GLFW_KEY_I,</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aff44570aca8241914870afbc310cdb85">J</a> = GLFW_KEY_J,</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aa5f3c6a11b03839d46af9fb43c97c188">K</a> = GLFW_KEY_K,</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587">L</a> = GLFW_KEY_L,</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a69691c7bdcc3ce6d5d8a1361f22d04ac">M</a> = GLFW_KEY_M,</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a8d9c307cb7f3c4a32822a51922d1ceaa">N</a> = GLFW_KEY_N,</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af186217753c37b9b9f958d906208506e">O</a> = GLFW_KEY_O,</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a44c29edb103a2872f519ad0c9a0fdaaa">P</a> = GLFW_KEY_P,</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee">Q</a> = GLFW_KEY_Q,</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6">R</a> = GLFW_KEY_R,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e">S</a> = GLFW_KEY_S,</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> = GLFW_KEY_T,</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb">U</a> = GLFW_KEY_U,</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5206560a306a2e085a437fd258eb57ce">V</a> = GLFW_KEY_V,</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276">W</a> = GLFW_KEY_W,</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383">X</a> = GLFW_KEY_X,</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0">Y</a> = GLFW_KEY_Y,</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5">Z</a> = GLFW_KEY_Z,</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a91a9360a45bb242906ee86ecbf9ac7c4">LEfT_BRACKET</a> = GLFW_KEY_LEFT_BRACKET, <span class="comment">/* [ */</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aecb4a6f3440c2ed0dff59f17375a27c0">BACKSLASH</a> = GLFW_KEY_BACKSLASH, <span class="comment">/* \ */</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a91d8d0b84f26c3e30fb064ea4fc1090f">RIGHT_BRACKET</a> = GLFW_KEY_RIGHT_BRACKET, <span class="comment">/* ] */</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1547ad05c44be2cc614be32159bf666b">GRAVE_ACCENT</a> = GLFW_KEY_GRAVE_ACCENT, <span class="comment">/* ` */</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566">WORLD_1</a> = GLFW_KEY_WORLD_1, <span class="comment">/* non-US #1 */</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22">WORLD_2</a> = GLFW_KEY_WORLD_2, <span class="comment">/* non-US #2 */</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// function keys</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d">ESCAPE</a> = GLFW_KEY_ESCAPE,</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13">ENTER</a> = GLFW_KEY_ENTER,</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af684bf05fa3e81528c84d1d281d839f1">TAB</a> = GLFW_KEY_TAB,</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6f5d8e41084b4d3d47fa621c459eede1">BACKSPACE</a> = GLFW_KEY_BACKSPACE,</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b">INSERT</a> = GLFW_KEY_INSERT,</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e">DELETE</a> = GLFW_KEY_DELETE,</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21507b40c80068eda19865706fdc2403">RIGHT</a> = GLFW_KEY_RIGHT,</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a684d325a7303f52e64011467ff5c5758">LEFT</a> = GLFW_KEY_LEFT,</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f">DOWN</a> = GLFW_KEY_DOWN,</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afbaedde498cdead4f2780217646e9ba1">UP</a> = GLFW_KEY_UP,</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae791d936f894ce58dd18bf603edcb9b4">PAGE_UP</a> = GLFW_KEY_PAGE_UP,</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae9a23c5ce3d34b40123d65ca14b2e88f">PAGE_DOWN</a> = GLFW_KEY_PAGE_DOWN,</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a710533dd879dd1202e5c73b27705bf02">HOME</a> = GLFW_KEY_HOME,</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905">END</a> = GLFW_KEY_END,</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae40af1d5cc55c55ae0bb25953f7a7ee2">CAPS_LOCK</a> = GLFW_KEY_CAPS_LOCK,</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed">SCROLL_LOCK</a> = GLFW_KEY_SCROLL_LOCK,</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb0d0bf9279e78f982deba761110e434">NUM_LOCK</a> = GLFW_KEY_NUM_LOCK,</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a853f8ded7a96b5a765704974e6a3ca96">PRINT_SCREEN</a> = GLFW_KEY_PRINT_SCREEN,</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891">PAUSE</a> = GLFW_KEY_PAUSE,</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1dffc8709f31a4987c8a88334107e89">F1</a> = GLFW_KEY_F1,</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afe5c3684dce76cdd9f7f42430868aa74">F2</a> = GLFW_KEY_F2,</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4b6bf4b531770872d4328ce69bef5627">F3</a> = GLFW_KEY_F3,</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae7e0e72401a9f2718ed0f39f2861d702">F4</a> = GLFW_KEY_F4,</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a37f438df6a6d5ba4c17ef8ca58562f00">F5</a> = GLFW_KEY_F5,</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1faf42f2823f184eb2c9f0dffe5d73f2">F6</a> = GLFW_KEY_F6,</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839">F7</a> = GLFW_KEY_F7,</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7">F8</a> = GLFW_KEY_F8,</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9">F9</a> = GLFW_KEY_F9,</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab213ce22ca6ad4eda8db82966b9b6e5a">F10</a> = GLFW_KEY_F10,</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a643b0662422d1d0dffa3fca2e2bf28a8">F11</a> = GLFW_KEY_F11,</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae902674982fc99aa343cdd94da7476c3">F12</a> = GLFW_KEY_F12,</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a95dfde4807d4d6a9eec499203b3c24a0">F13</a> = GLFW_KEY_F13,</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2468649b6215c4cdd2aef5095b3f5932">F14</a> = GLFW_KEY_F14,</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae53b55851b9ff4979f2c3ff434a4a138">F15</a> = GLFW_KEY_F15,</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a56d8353718e6fdc78b8d69078a2cdb94">F16</a> = GLFW_KEY_F16,</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affa5882d1ddcf903bf0d0dbc30bfc604">F17</a> = GLFW_KEY_F17,</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a810b30cdfc07fd7fff553a94b828ff78">F18</a> = GLFW_KEY_F18,</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822acd7c2a221ef5d0a34acc0bcd679b2054">F19</a> = GLFW_KEY_F19,</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afc335adb3d69d3d8270769e1923ea4dc">F20</a> = GLFW_KEY_F20,</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a77e9eee7c579eef5f3731ecf1053c02e">F21</a> = GLFW_KEY_F21,</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7fa06ead699fcbd63132370ffe13335a">F22</a> = GLFW_KEY_F22,</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a889645d530078147e7dc69a9caadc31e">F23</a> = GLFW_KEY_F23,</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aebd7820c520d05eca2d775c37d141273">F24</a> = GLFW_KEY_F24,</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822aabf9846f265ae3dea4bf9d740f5cb1aa">F25</a> = GLFW_KEY_F25,</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52">KP_0</a> = GLFW_KEY_KP_0,</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afdcbdc22f7e22388bf5905c290bcfe4b">KP_1</a> = GLFW_KEY_KP_1,</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2d0bfa737eccfce7842cd2230eed6712">KP_2</a> = GLFW_KEY_KP_2,</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a766b4a88cba7645629bac70fd01d8275">KP_3</a> = GLFW_KEY_KP_3,</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9c56f942b051ba23447e108e16a8b23b">KP_4</a> = GLFW_KEY_KP_4,</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adc271d081ca9fcbefdc42998313398d8">KP_5</a> = GLFW_KEY_KP_5,</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2091809ab6bdbc0a1975bf61d6099748">KP_6</a> = GLFW_KEY_KP_6,</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a71f42e8faf0fb7cb14174c8481461c00">KP_7</a> = GLFW_KEY_KP_7,</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a62e75b78c155e8549c5c5edb434a7757">KP_8</a> = GLFW_KEY_KP_8,</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3d548437292c0cd1662fc30d420f2c27">KP_9</a> = GLFW_KEY_KP_9,</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1a9c94725005bc4759507db8acc8da33">KP_DECIMAL</a> = GLFW_KEY_KP_DECIMAL,</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7c333963ed187368820c5343b355e5bc">KP_DIVIDE</a> = GLFW_KEY_KP_DIVIDE,</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2140df7839a3713724b35168defcc975">KP_MULTIPLY</a> = GLFW_KEY_KP_MULTIPLY,</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a17de1e647789892e1fb512bf04db4866">KP_SUBTRACT</a> = GLFW_KEY_KP_SUBTRACT,</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4">KP_ADD</a> = GLFW_KEY_KP_ADD,</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adea24610606fb34c587a8fe8ed8f8389">KP_ENTER</a> = GLFW_KEY_KP_ENTER,</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2cfe3b4f9911c5899d79f171d6b9cc4a">KP_EQUAL</a> = GLFW_KEY_KP_EQUAL,</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab6c7e6204e97690efd79d6f513ed5613">LEFT_SHIFT</a> = GLFW_KEY_LEFT_SHIFT,</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822addf133566f544b297f2f84874c283589">LEFT_CONTROL</a> = GLFW_KEY_LEFT_CONTROL,</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56">LEFT_ALT</a> = GLFW_KEY_LEFT_ALT,</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde">LEFT_SUPER</a> = GLFW_KEY_LEFT_SUPER,</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098">RIGHT_SHIFT</a> = GLFW_KEY_RIGHT_SHIFT,</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a80cdb34a10d276950f8b20b6814c9194">RIGHT_CONTROL</a> = GLFW_KEY_RIGHT_CONTROL,</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a0123827c03dce5d07ebd43bd649a1073">RIGHT_ALT</a> = GLFW_KEY_RIGHT_ALT,</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a8825bb5d58b44b72465799553acb964d">RIGHT_SUPER</a> = GLFW_KEY_RIGHT_SUPER,</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3ed53fbeb1eab0443561b68ca0c0b5cf">MENU</a> = GLFW_KEY_MENU,</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af447f5c03508de4d88e340390ba7c78f">LAST</a> = GLFW_KEY_LAST,</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;};</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;} <span class="comment">// namepsace yage</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56">yage::key::LEFT_ALT</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4">yage::key::KP_ADD</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587">yage::key::L</a></div></div>
@@ -353,7 +354,7 @@ $(document).ready(function(){initNavTree('input_8h_source.html','');});
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891">yage::key::PAUSE</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b">yage::key::INSERT</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098">yage::key::RIGHT_SHIFT</a></div></div>
-<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage::key</a></div><div class="ttdeci">key</div><div class="ttdef"><b>Definition:</b> input.h:17</div></div>
+<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage::key</a></div><div class="ttdeci">key</div><div class="ttdef"><b>Definition:</b> input.h:18</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e">yage::key::S</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e">yage::key::DELETE</a></div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed">yage::key::SCROLL_LOCK</a></div></div>
@@ -379,8 +380,8 @@ $(document).ready(function(){initNavTree('input_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="input_8h.html">input.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="input_8h.html">input.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/iomanager_8cpp.html b/iomanager_8cpp.html
index 5f2b7608..796c2c0a 100644
--- a/iomanager_8cpp.html
+++ b/iomanager_8cpp.html
@@ -125,7 +125,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -133,7 +134,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="iomanager_8cpp.html">iomanager.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/iomanager_8h.html b/iomanager_8h.html
index bf7b7b5f..3969aca2 100644
--- a/iomanager_8h.html
+++ b/iomanager_8h.html
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="iomanager_8h.html">iomanager.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/iomanager_8h_source.html b/iomanager_8h_source.html
index 5017f6ad..4e00a269 100644
--- a/iomanager_8h_source.html
+++ b/iomanager_8h_source.html
@@ -136,7 +136,7 @@ $(document).ready(function(){initNavTree('iomanager_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="iomanager_8h.html">iomanager.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logger_8cpp.html b/logger_8cpp.html
index abed9f98..2dc6c4e1 100644
--- a/logger_8cpp.html
+++ b/logger_8cpp.html
@@ -129,7 +129,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -137,7 +138,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logger_8cpp.html">logger.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logger_8dox.html b/logger_8dox.html
new file mode 100644
index 00000000..d43e2ea3
--- /dev/null
+++ b/logger_8dox.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: docs/logger.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('logger_8dox.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">docs/logger.dox File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="logger_8dox.html">logger.dox</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/logger_8h.html b/logger_8h.html
index b2587bf4..a7c40901 100644
--- a/logger_8h.html
+++ b/logger_8h.html
@@ -119,12 +119,18 @@ $(document).ready(function(){initNavTree('logger_8h.html','');});
<div class="textblock"><code>#include &lt;memory&gt;</code><br/>
<code>#include &lt;string&gt;</code><br/>
<code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="active_8h_source.html">../util/active.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="loglevel_8h_source.html">loglevel.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="logmessage_8h_source.html">logmessage.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="logsink_8h_source.html">logsink.h</a>&quot;</code><br/>
</div>
<p><a href="logger_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html">yage::Logger</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+ <a href="classyage_1_1Logger.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
@@ -135,19 +141,90 @@ Namespaces</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
-<tr class="memitem:aade1a167159e476dee85a6a097cb7ccc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#aade1a167159e476dee85a6a097cb7ccc">gLog</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(__FILE__, __LINE__))</td></tr>
-<tr class="separator:aade1a167159e476dee85a6a097cb7ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9055939896a9ae18d3a833c5023e98d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#a9055939896a9ae18d3a833c5023e98d1">yLogger</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>())</td></tr>
+<tr class="separator:a9055939896a9ae18d3a833c5023e98d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0061fe08a4e2d9ed843a782044d3528f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f">yLogDebug</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage::LogLevel::DEBUG</a>, __FILE__, __LINE__))</td></tr>
+<tr class="separator:a0061fe08a4e2d9ed843a782044d3528f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17afd33b46d111ec5e97f20e2c667e2d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d">yLogInfo</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage::LogLevel::INFO</a>, __FILE__, __LINE__))</td></tr>
+<tr class="separator:a17afd33b46d111ec5e97f20e2c667e2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac26448787b9e07f1cf6e928e23ef9b7a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a">yLogWarning</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage::LogLevel::WARNING</a>, __FILE__, __LINE__))</td></tr>
+<tr class="separator:ac26448787b9e07f1cf6e928e23ef9b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac71f194a096b3d7b4cf4ec448ee8b87d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d">yLogError</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage::LogLevel::ERROR</a>, __FILE__, __LINE__))</td></tr>
+<tr class="separator:ac71f194a096b3d7b4cf4ec448ee8b87d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89062c0e6f5d9d0dd34553259c0fe00e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e">yLogFatal</a>&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage::LogLevel::FATAL</a>, __FILE__, __LINE__))</td></tr>
+<tr class="separator:a89062c0e6f5d9d0dd34553259c0fe00e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a class="anchor" id="aade1a167159e476dee85a6a097cb7ccc"></a>
+<a class="anchor" id="a0061fe08a4e2d9ed843a782044d3528f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define gLog&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(__FILE__, __LINE__))</td>
+ <td class="memname">#define yLogDebug&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage::LogLevel::DEBUG</a>, __FILE__, __LINE__))</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac71f194a096b3d7b4cf4ec448ee8b87d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define yLogError&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage::LogLevel::ERROR</a>, __FILE__, __LINE__))</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a89062c0e6f5d9d0dd34553259c0fe00e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define yLogFatal&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage::LogLevel::FATAL</a>, __FILE__, __LINE__))</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9055939896a9ae18d3a833c5023e98d1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define yLogger&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>())</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a17afd33b46d111ec5e97f20e2c667e2d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define yLogInfo&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage::LogLevel::INFO</a>, __FILE__, __LINE__))</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac26448787b9e07f1cf6e928e23ef9b7a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define yLogWarning&#160;&#160;&#160;(<a class="el" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a>()(<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage::LogLevel::WARNING</a>, __FILE__, __LINE__))</td>
</tr>
</table>
</div><div class="memdoc">
@@ -160,7 +237,7 @@ Macros</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logger_8h.html">logger.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logger_8h.js b/logger_8h.js
index c1fd6b33..2daf6992 100644
--- a/logger_8h.js
+++ b/logger_8h.js
@@ -1,5 +1,10 @@
var logger_8h =
[
[ "Logger", "classyage_1_1Logger.html", "classyage_1_1Logger" ],
- [ "gLog", "logger_8h.html#aade1a167159e476dee85a6a097cb7ccc", null ]
+ [ "yLogDebug", "logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f", null ],
+ [ "yLogError", "logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d", null ],
+ [ "yLogFatal", "logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e", null ],
+ [ "yLogger", "logger_8h.html#a9055939896a9ae18d3a833c5023e98d1", null ],
+ [ "yLogInfo", "logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d", null ],
+ [ "yLogWarning", "logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a", null ]
]; \ No newline at end of file
diff --git a/logger_8h_source.html b/logger_8h_source.html
index bd4d18df..cf4b63d4 100644
--- a/logger_8h_source.html
+++ b/logger_8h_source.html
@@ -116,47 +116,74 @@ $(document).ready(function(){initNavTree('logger_8h_source.html','');});
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">class </span>Active;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">class </span>LogMessage;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">class </span>LogSink;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classyage_1_1Logger.html"> 23</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Logger.html">Logger</a></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>();</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> <a class="code" href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">operator()</a>(<span class="keyword">const</span> std::string &amp;fileName, <span class="keywordtype">int</span> lineNum);</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">flush</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> *msg);</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">add</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogSink.html">LogSink</a> &amp;sink);</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">void</span> <span class="keyword">remove</span>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogSink.html">LogSink</a> &amp;sink);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">clear</a>();</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../util/active.h&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="loglevel_8h.html">loglevel.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logmessage_8h.html">logmessage.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logsink_8h.html">logsink.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classyage_1_1Logger.html"> 24</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Logger.html">Logger</a></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>();</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>(<span class="keyword">const</span> std::string &amp;file_path);</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>(<a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level);</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">Logger</a>(<a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level, <span class="keyword">const</span> std::string &amp;file_path);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> <a class="code" href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">operator()</a>(<a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> level = <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a>, <span class="keyword">const</span> std::string &amp;fileName = <span class="stringliteral">&quot;&quot;</span>,</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">int</span> lineNum = -1);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> <a class="code" href="classyage_1_1Logger.html">Logger</a> &amp;<a class="code" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">instance</a>();</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f"> 38</a></span>&#160; std::vector&lt;LogSink&gt; <a class="code" href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">sinks_</a>;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744"> 39</a></span>&#160; std::unique_ptr&lt;Active&gt; <a class="code" href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">active_</a>;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;};</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">flush</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> *msg);</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">add</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogSink.html">LogSink</a> &amp;sink);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <span class="keyword">remove</span>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogSink.html">LogSink</a> &amp;sink);</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">clear</a>();</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">static</span> <a class="code" href="classyage_1_1Logger.html">Logger</a> &amp;<a class="code" href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">instance</a>();</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="logger_8h.html#aade1a167159e476dee85a6a097cb7ccc"> 44</a></span>&#160;<span class="preprocessor">#define gLog (yage::Logger::instance()(__FILE__, __LINE__))</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// setter for the level</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">setLevel</a>(<a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level);</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;LogSink&gt; sinks_;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::unique_ptr&lt;Active&gt; active_;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> min_level_;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;};</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="logger_8h.html#a9055939896a9ae18d3a833c5023e98d1"> 53</a></span>&#160;<span class="preprocessor">#define yLogger (yage::Logger::instance())</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f"> 55</a></span>&#160;<span class="preprocessor">#define yLogDebug \</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor"> (yage::Logger::instance()(yage::LogLevel::DEBUG, __FILE__, __LINE__))</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d"> 58</a></span>&#160;<span class="preprocessor">#define yLogInfo (yage::Logger::instance()(yage::LogLevel::INFO, __FILE__, __LINE__))</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a"> 60</a></span>&#160;<span class="preprocessor">#define yLogWarning \</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"> (yage::Logger::instance()(yage::LogLevel::WARNING, __FILE__, __LINE__))</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d"> 63</a></span>&#160;<span class="preprocessor">#define yLogError \</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> (yage::Logger::instance()(yage::LogLevel::ERROR, __FILE__, __LINE__))</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e"> 66</a></span>&#160;<span class="preprocessor">#define yLogFatal \</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> (yage::Logger::instance()(yage::LogLevel::FATAL, __FILE__, __LINE__))</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classyage_1_1Logger_html_a950c0c75b86bf330cf11a0ad29bd9a64"><div class="ttname"><a href="classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64">yage::Logger::Logger</a></div><div class="ttdeci">Logger()</div><div class="ttdef"><b>Definition:</b> logger.cpp:22</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html"><div class="ttname"><a href="classyage_1_1LogMessage.html">yage::LogMessage</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:21</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_a489f97b1b21ac425ebbdb063de068744"><div class="ttname"><a href="classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744">yage::Logger::active_</a></div><div class="ttdeci">std::unique_ptr&lt; Active &gt; active_</div><div class="ttdef"><b>Definition:</b> logger.h:39</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_a036fcbfcb9d3428931ec5a11237501a8"><div class="ttname"><a href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">yage::Logger::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> logger.cpp:61</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_a4135a0742877aa36d52f1867bc4e7b1f"><div class="ttname"><a href="classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f">yage::Logger::sinks_</a></div><div class="ttdeci">std::vector&lt; LogSink &gt; sinks_</div><div class="ttdef"><b>Definition:</b> logger.h:38</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_ad165738c5b738d80a14b0ee1319cae2e"><div class="ttname"><a href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a></div><div class="ttdeci">static Logger &amp; instance()</div><div class="ttdef"><b>Definition:</b> logger.cpp:66</div></div>
-<div class="ttc" id="classyage_1_1Logger_html"><div class="ttname"><a href="classyage_1_1Logger.html">yage::Logger</a></div><div class="ttdef"><b>Definition:</b> logger.h:23</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_afe5dc1d30d3fd2599a119455672d6e00"><div class="ttname"><a href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">yage::Logger::flush</a></div><div class="ttdeci">void flush(const LogMessage *msg)</div><div class="ttdef"><b>Definition:</b> logger.cpp:33</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_a541278f8908daecb8d56d6da0a5642b6"><div class="ttname"><a href="classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6">yage::Logger::operator()</a></div><div class="ttdeci">LogMessage operator()(const std::string &amp;fileName, int lineNum)</div><div class="ttdef"><b>Definition:</b> logger.cpp:28</div></div>
-<div class="ttc" id="classyage_1_1Logger_html_a5ec9a752e8cbb278342fdb49520fbcdd"><div class="ttname"><a href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">yage::Logger::add</a></div><div class="ttdeci">void add(const LogSink &amp;sink)</div><div class="ttdef"><b>Definition:</b> logger.cpp:47</div></div>
+<div class="ttc" id="classyage_1_1LogMessage_html"><div class="ttname"><a href="classyage_1_1LogMessage.html">yage::LogMessage</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:23</div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage::LogLevel</a></div><div class="ttdeci">LogLevel</div><div class="ttdef"><b>Definition:</b> loglevel.h:14</div></div>
+<div class="ttc" id="classyage_1_1Logger_html_a2ce5eb7eb1b108e38c1b90655999a8eb"><div class="ttname"><a href="classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb">yage::Logger::setLevel</a></div><div class="ttdeci">void setLevel(LogLevel min_level)</div><div class="ttdef"><b>Definition:</b> logger.cpp:95</div></div>
+<div class="ttc" id="classyage_1_1Logger_html_a036fcbfcb9d3428931ec5a11237501a8"><div class="ttname"><a href="classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8">yage::Logger::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> logger.cpp:83</div></div>
+<div class="ttc" id="classyage_1_1Logger_html_ad165738c5b738d80a14b0ee1319cae2e"><div class="ttname"><a href="classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e">yage::Logger::instance</a></div><div class="ttdeci">static Logger &amp; instance()</div><div class="ttdef"><b>Definition:</b> logger.cpp:88</div></div>
+<div class="ttc" id="classyage_1_1Logger_html_a3c7d6d1a9ccf0397dc81350cef6782f2"><div class="ttname"><a href="classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2">yage::Logger::operator()</a></div><div class="ttdeci">LogMessage operator()(LogLevel level=LogLevel::INFO, const std::string &amp;fileName=&quot;&quot;, int lineNum=-1)</div><div class="ttdef"><b>Definition:</b> logger.cpp:47</div></div>
+<div class="ttc" id="logmessage_8h_html"><div class="ttname"><a href="logmessage_8h.html">logmessage.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="loglevel_8h_html"><div class="ttname"><a href="loglevel_8h.html">loglevel.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="classyage_1_1Logger_html"><div class="ttname"><a href="classyage_1_1Logger.html">yage::Logger</a></div><div class="ttdoc">Logger</div><div class="ttdef"><b>Definition:</b> logger.h:24</div></div>
+<div class="ttc" id="classyage_1_1Logger_html_afe5dc1d30d3fd2599a119455672d6e00"><div class="ttname"><a href="classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00">yage::Logger::flush</a></div><div class="ttdeci">void flush(const LogMessage *msg)</div><div class="ttdef"><b>Definition:</b> logger.cpp:53</div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage::LogLevel::INFO</a></div></div>
+<div class="ttc" id="logsink_8h_html"><div class="ttname"><a href="logsink_8h.html">logsink.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="classyage_1_1Logger_html_a5ec9a752e8cbb278342fdb49520fbcdd"><div class="ttname"><a href="classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd">yage::Logger::add</a></div><div class="ttdeci">void add(const LogSink &amp;sink)</div><div class="ttdef"><b>Definition:</b> logger.cpp:69</div></div>
<div class="ttc" id="classyage_1_1LogSink_html"><div class="ttname"><a href="classyage_1_1LogSink.html">yage::LogSink</a></div><div class="ttdef"><b>Definition:</b> logsink.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -164,7 +191,7 @@ $(document).ready(function(){initNavTree('logger_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logger_8h.html">logger.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/loglevel_8h.html b/loglevel_8h.html
index 631afc31..9cbbe13c 100644
--- a/loglevel_8h.html
+++ b/loglevel_8h.html
@@ -105,7 +105,8 @@ $(document).ready(function(){initNavTree('loglevel_8h.html','');});
<div class="header">
<div class="summary">
-<a href="#nested-classes">Classes</a> </div>
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">loglevel.h File Reference</div> </div>
</div><!--header-->
@@ -117,13 +118,28 @@ $(document).ready(function(){initNavTree('loglevel_8h.html','');});
<p><a href="loglevel_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLogLevel.html">LogLevel</a></td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
+<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a4ac616fa26af17775ed558a4c08e4788"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage::LogLevel</a> { <br/>
+&#160;&#160;<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage::LogLevel::DEBUG</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage::LogLevel::INFO</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage::LogLevel::WARNING</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage::LogLevel::ERROR</a>,
+<br/>
+&#160;&#160;<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage::LogLevel::FATAL</a>
+<br/>
+ }</td></tr>
+<tr class="separator:a4ac616fa26af17775ed558a4c08e4788"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -131,7 +147,7 @@ Classes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="loglevel_8h.html">loglevel.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/loglevel_8h.js b/loglevel_8h.js
new file mode 100644
index 00000000..7f6cab17
--- /dev/null
+++ b/loglevel_8h.js
@@ -0,0 +1,10 @@
+var loglevel_8h =
+[
+ [ "LogLevel", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788", [
+ [ "DEBUG", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15", null ],
+ [ "INFO", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3", null ],
+ [ "WARNING", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b", null ],
+ [ "ERROR", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5", null ],
+ [ "FATAL", "loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc", null ]
+ ] ]
+]; \ No newline at end of file
diff --git a/loglevel_8h_source.html b/loglevel_8h_source.html
index 6a2e3ae6..ac59b6e1 100644
--- a/loglevel_8h_source.html
+++ b/loglevel_8h_source.html
@@ -112,22 +112,32 @@ $(document).ready(function(){initNavTree('loglevel_8h_source.html','');});
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_LOGLEVEL_H</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_LOGLEVEL_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="classLogLevel.html"> 12</a></span>&#160;<span class="keyword">class </span><a class="code" href="classLogLevel.html">LogLevel</a></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel</a>();</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classLogLevel_html"><div class="ttname"><a href="classLogLevel.html">LogLevel</a></div><div class="ttdef"><b>Definition:</b> loglevel.h:12</div></div>
-<div class="ttc" id="classLogLevel_html_ae9961bbc0dfc8f5cce5889f39e1d47ec"><div class="ttname"><a href="classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec">LogLevel::LogLevel</a></div><div class="ttdeci">LogLevel()</div></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>yage {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
+<div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788"> 14</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> {</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">DEBUG</a>,</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">INFO</a>,</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">WARNING</a>,</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">ERROR</a>,</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">FATAL</a>,</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;};</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage::LogLevel::WARNING</a></div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage::LogLevel::FATAL</a></div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage::LogLevel</a></div><div class="ttdeci">LogLevel</div><div class="ttdef"><b>Definition:</b> loglevel.h:14</div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage::LogLevel::DEBUG</a></div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage::LogLevel::ERROR</a></div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage::LogLevel::INFO</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="loglevel_8h.html">loglevel.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logmessage_8cpp.html b/logmessage_8cpp.html
index 804f19f6..a7ae9b3e 100644
--- a/logmessage_8cpp.html
+++ b/logmessage_8cpp.html
@@ -125,7 +125,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -133,7 +134,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logmessage_8cpp.html">logmessage.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logmessage_8h.html b/logmessage_8h.html
index 7f505300..0da7d889 100644
--- a/logmessage_8h.html
+++ b/logmessage_8h.html
@@ -118,6 +118,7 @@ $(document).ready(function(){initNavTree('logmessage_8h.html','');});
<div class="textblock"><code>#include &lt;memory&gt;</code><br/>
<code>#include &lt;sstream&gt;</code><br/>
<code>#include &lt;string&gt;</code><br/>
+<code>#include &quot;<a class="el" href="loglevel_8h_source.html">loglevel.h</a>&quot;</code><br/>
</div>
<p><a href="logmessage_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
@@ -135,7 +136,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -143,7 +145,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logmessage_8h.html">logmessage.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logmessage_8h_source.html b/logmessage_8h_source.html
index 33c5b39c..28ed139e 100644
--- a/logmessage_8h_source.html
+++ b/logmessage_8h_source.html
@@ -116,77 +116,80 @@ $(document).ready(function(){initNavTree('logmessage_8h_source.html','');});
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">class </span>Logger;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="loglevel_8h.html">loglevel.h</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html"> 21</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1LogMessage.html">LogMessage</a></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">~LogMessage</a>();</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;msg) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">class </span>Logger;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html"> 23</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1LogMessage.html">LogMessage</a></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">~LogMessage</a>();</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;msg) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">operator=</a>(<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;msg) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &amp;value);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">operator&lt;&lt;</a>(std::ostream &amp;(*fn)(std::ostream &amp;os));</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;msg) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;msg) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">operator=</a>(<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;msg) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &amp;value);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html"> 36</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4"> 37</a></span>&#160; std::string <a class="code" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">fileName</a>;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362"> 38</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">lineNo</a>;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; };</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a"> 42</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classyage_1_1Logger.html">Logger</a>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">operator&lt;&lt;</a>(std::ostream &amp;(*fn)(std::ostream &amp;os));</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html"> 38</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a> {</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b"> 39</a></span>&#160; <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">level</a>;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4"> 40</a></span>&#160; std::string <a class="code" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">fileName</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c"> 41</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">line</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; };</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5"> 44</a></span>&#160; std::ostringstream <a class="code" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">buffer_</a>;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792"> 45</a></span>&#160; <a class="code" href="classyage_1_1Logger.html">Logger</a> *<a class="code" href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">owner_</a>;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee"> 46</a></span>&#160; <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a> <a class="code" href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">meta_</a>;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<a class="code" href="classyage_1_1Logger.html">Logger</a> *owner, <span class="keyword">const</span> std::string &amp;fileName_i, <span class="keywordtype">int</span> lineNum_i);</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;msg);</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;};</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">/* -----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * Template definitions</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * -----------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90"> 58</a></span>&#160;<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">LogMessage::operator&lt;&lt;</a>(<span class="keyword">const</span> T &amp;value)</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">buffer_</a> &lt;&lt; value;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html_a9df0fa3ac10256390a1fe0c873a9f362"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">yage::LogMessage::Meta::lineNo</a></div><div class="ttdeci">int lineNo</div><div class="ttdef"><b>Definition:</b> logmessage.h:38</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html"><div class="ttname"><a href="classyage_1_1LogMessage.html">yage::LogMessage</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:21</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html_a80b72c0e143b382538c347c201cbb4ee"><div class="ttname"><a href="classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee">yage::LogMessage::meta_</a></div><div class="ttdeci">Meta meta_</div><div class="ttdef"><b>Definition:</b> logmessage.h:46</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html_af79ecd529e839a5a3e99077dde60df90"><div class="ttname"><a href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">yage::LogMessage::operator&lt;&lt;</a></div><div class="ttdeci">LogMessage &amp; operator&lt;&lt;(const T &amp;value)</div><div class="ttdef"><b>Definition:</b> logmessage.h:58</div></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a"> 45</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classyage_1_1Logger.html">Logger</a>;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::ostringstream buffer_;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classyage_1_1Logger.html">Logger</a> *owner_;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a> meta_;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<a class="code" href="classyage_1_1Logger.html">Logger</a> *owner, <a class="code" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> level, <span class="keyword">const</span> std::string &amp;file_name, <span class="keywordtype">int</span> line_num);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">LogMessage</a>(<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;&amp;msg);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">/* -----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * Template definitions</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * -----------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90"> 61</a></span>&#160;<a class="code" href="classyage_1_1LogMessage.html">LogMessage</a> &amp;<a class="code" href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">LogMessage::operator&lt;&lt;</a>(<span class="keyword">const</span> T &amp;value)</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; buffer_ &lt;&lt; value;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1LogMessage_html"><div class="ttname"><a href="classyage_1_1LogMessage.html">yage::LogMessage</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:23</div></div>
+<div class="ttc" id="namespaceyage_html_a4ac616fa26af17775ed558a4c08e4788"><div class="ttname"><a href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage::LogLevel</a></div><div class="ttdeci">LogLevel</div><div class="ttdef"><b>Definition:</b> loglevel.h:14</div></div>
+<div class="ttc" id="classyage_1_1LogMessage_html_af79ecd529e839a5a3e99077dde60df90"><div class="ttname"><a href="classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90">yage::LogMessage::operator&lt;&lt;</a></div><div class="ttdeci">LogMessage &amp; operator&lt;&lt;(const T &amp;value)</div><div class="ttdef"><b>Definition:</b> logmessage.h:61</div></div>
<div class="ttc" id="classyage_1_1LogMessage_html_af82ed7ceef5cfdac54ad2e176deb9fca"><div class="ttname"><a href="classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca">yage::LogMessage::~LogMessage</a></div><div class="ttdeci">~LogMessage()</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html_ae34f407242db5713632181b4ce9ae3d5"><div class="ttname"><a href="classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5">yage::LogMessage::buffer_</a></div><div class="ttdeci">std::ostringstream buffer_</div><div class="ttdef"><b>Definition:</b> logmessage.h:44</div></div>
-<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html_ae3ef1b01f47ef6254b8aa6fce13db7c4"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">yage::LogMessage::Meta::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> logmessage.h:37</div></div>
+<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html_ae3ef1b01f47ef6254b8aa6fce13db7c4"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">yage::LogMessage::Meta::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> logmessage.h:40</div></div>
<div class="ttc" id="classyage_1_1LogMessage_html_af4ab2630201ecd155c329fbfebe352be"><div class="ttname"><a href="classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be">yage::LogMessage::LogMessage</a></div><div class="ttdeci">LogMessage(const LogMessage &amp;msg)=delete</div></div>
+<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html_ac2951995b1f4ebf28e94bcd268c3dd3c"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">yage::LogMessage::Meta::line</a></div><div class="ttdeci">int line</div><div class="ttdef"><b>Definition:</b> logmessage.h:41</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">yage::key::T</a></div></div>
-<div class="ttc" id="classyage_1_1Logger_html"><div class="ttname"><a href="classyage_1_1Logger.html">yage::Logger</a></div><div class="ttdef"><b>Definition:</b> logger.h:23</div></div>
+<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html_aa265c76e7ce54e4b912e1c41333fad3b"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">yage::LogMessage::Meta::level</a></div><div class="ttdeci">LogLevel level</div><div class="ttdef"><b>Definition:</b> logmessage.h:39</div></div>
+<div class="ttc" id="loglevel_8h_html"><div class="ttname"><a href="loglevel_8h.html">loglevel.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="classyage_1_1Logger_html"><div class="ttname"><a href="classyage_1_1Logger.html">yage::Logger</a></div><div class="ttdoc">Logger</div><div class="ttdef"><b>Definition:</b> logger.h:24</div></div>
<div class="ttc" id="classyage_1_1LogMessage_html_a31eb7ca394acbcfedca104e709f1c4ae"><div class="ttname"><a href="classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae">yage::LogMessage::operator=</a></div><div class="ttdeci">LogMessage &amp; operator=(const LogMessage &amp;msg)=delete</div></div>
-<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:36</div></div>
-<div class="ttc" id="classyage_1_1LogMessage_html_ad093f33360fc32ef014d215b0c1d4792"><div class="ttname"><a href="classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792">yage::LogMessage::owner_</a></div><div class="ttdeci">Logger * owner_</div><div class="ttdef"><b>Definition:</b> logmessage.h:45</div></div>
+<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:38</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logmessage_8h.html">logmessage.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logsink_8cpp.html b/logsink_8cpp.html
index 1998cfff..89090945 100644
--- a/logsink_8cpp.html
+++ b/logsink_8cpp.html
@@ -138,7 +138,8 @@ Functions</h2></td></tr>
<tr class="separator:a6b288197f6a97f197dda60e5b54f1841"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div><h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ae3c7a5bad8dd0db0a0a9cdd60c7b53d1"></a>
@@ -159,7 +160,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logsink_8cpp.html">logsink.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logsink_8h.html b/logsink_8h.html
index 6e6b78fd..65d8d35c 100644
--- a/logsink_8h.html
+++ b/logsink_8h.html
@@ -126,10 +126,6 @@ $(document).ready(function(){initNavTree('logsink_8h.html','');});
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogSink.html">yage::LogSink</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
@@ -147,7 +143,8 @@ Functions</h2></td></tr>
<tr class="separator:a6b288197f6a97f197dda60e5b54f1841"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -155,7 +152,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logsink_8h.html">logsink.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/logsink_8h.js b/logsink_8h.js
index 9c7e2317..a15a0e4d 100644
--- a/logsink_8h.js
+++ b/logsink_8h.js
@@ -1,8 +1,6 @@
var logsink_8h =
[
[ "LogSink", "classyage_1_1LogSink.html", "classyage_1_1LogSink" ],
- [ "Concept", "structyage_1_1LogSink_1_1Concept.html", "structyage_1_1LogSink_1_1Concept" ],
- [ "Model", "structyage_1_1LogSink_1_1Model.html", "structyage_1_1LogSink_1_1Model" ],
[ "makeConsoleSink", "logsink_8h.html#ab54350a8dbf59338c99ab4f43cfa2858", null ],
[ "makeFileSink", "logsink_8h.html#ad537beeea51c8314e407fadd24affc34", null ],
[ "makeFileSink", "logsink_8h.html#a6b288197f6a97f197dda60e5b54f1841", null ]
diff --git a/logsink_8h_source.html b/logsink_8h_source.html
index 6f2e2294..f584298e 100644
--- a/logsink_8h_source.html
+++ b/logsink_8h_source.html
@@ -137,25 +137,25 @@ $(document).ready(function(){initNavTree('logsink_8h_source.html','');});
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta, <span class="keyword">const</span> std::string &amp;msg) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Concept.html"> 39</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">~Concept</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">struct </span>Concept {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">virtual</span> ~Concept() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> *<a class="code" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">clone</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta,</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> Concept *clone() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> std::string &amp;msg) <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; };</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Model.html"> 48</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structyage_1_1LogSink_1_1Model.html">Model</a> : <a class="code" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> {</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">Model</a>(<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> impl_i);</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> *<a class="code" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">clone</a>() <span class="keyword">const override</span>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta,</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">struct </span>Model : Concept {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Model(<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> impl_i);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">virtual</span> Concept *clone() <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> std::string &amp;msg) <span class="keyword">const override</span>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d"> 54</a></span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">impl</a>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> impl;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; };</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc"> 57</a></span>&#160; std::unique_ptr&lt;Concept&gt; <a class="code" href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">wrapper_</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::unique_ptr&lt;Concept&gt; wrapper_;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;};</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<a class="code" href="classyage_1_1LogSink.html">LogSink</a> <a class="code" href="namespaceyage.html#ab54350a8dbf59338c99ab4f43cfa2858">makeConsoleSink</a>();</div>
@@ -169,23 +169,23 @@ $(document).ready(function(){initNavTree('logsink_8h_source.html','');});
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e"> 71</a></span>&#160;<a class="code" href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e">LogSink::LogSink</a>(T impl) : wrapper_(new <a class="code" href="structyage_1_1LogSink_1_1Model.html">Model</a>&lt;<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>&gt;(std::move(impl)))</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e"> 71</a></span>&#160;<a class="code" href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e">LogSink::LogSink</a>(T impl) : wrapper_(new Model&lt;<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>&gt;(std::move(impl)))</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9"> 76</a></span>&#160;<a class="code" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">LogSink::Model&lt;T&gt;::Model</a>(T impl_i) : impl(impl_i)</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;LogSink::Model&lt;T&gt;::Model(T impl_i) : impl(impl_i)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf"> 81</a></span>&#160;<a class="code" href="structyage_1_1LogSink_1_1Concept.html">LogSink::Concept</a> *<a class="code" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">LogSink::Model&lt;T&gt;::clone</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;LogSink::Concept *LogSink::Model&lt;T&gt;::clone()<span class="keyword"> const</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword"></span>{</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="structyage_1_1LogSink_1_1Model.html">Model&lt;T&gt;</a>(impl);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> Model&lt;T&gt;(impl);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224"> 87</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">LogSink::Model&lt;T&gt;::write</a>(<span class="keyword">const</span> <a class="code" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta,</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">void</span> LogSink::Model&lt;T&gt;::write(<span class="keyword">const</span> LogMessage::Meta &amp;meta,</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> std::string &amp;msg)<span class="keyword"> const</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; impl(meta, msg);</div>
@@ -194,25 +194,15 @@ $(document).ready(function(){initNavTree('logsink_8h_source.html','');});
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;} <span class="comment">// namespace yage</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1LogSink_html_a63dfa11dc8cc1d885b61613e10332fdc"><div class="ttname"><a href="classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc">yage::LogSink::wrapper_</a></div><div class="ttdeci">std::unique_ptr&lt; Concept &gt; wrapper_</div><div class="ttdef"><b>Definition:</b> logsink.h:57</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Model_html_a30f256cae13bc0c1a0a93cae4909feaf"><div class="ttname"><a href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">yage::LogSink::Model::clone</a></div><div class="ttdeci">virtual Concept * clone() const override</div><div class="ttdef"><b>Definition:</b> logsink.h:81</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Model_html_a99a011e95f7979baec2805df06d20c5d"><div class="ttname"><a href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">yage::LogSink::Model::impl</a></div><div class="ttdeci">T impl</div><div class="ttdef"><b>Definition:</b> logsink.h:54</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Model_html_ae61438d2927d21b4af8f6ff2acc38224"><div class="ttname"><a href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">yage::LogSink::Model::write</a></div><div class="ttdeci">virtual void write(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const override</div><div class="ttdef"><b>Definition:</b> logsink.h:87</div></div>
<div class="ttc" id="namespaceyage_html_ab54350a8dbf59338c99ab4f43cfa2858"><div class="ttname"><a href="namespaceyage.html#ab54350a8dbf59338c99ab4f43cfa2858">yage::makeConsoleSink</a></div><div class="ttdeci">LogSink makeConsoleSink()</div><div class="ttdef"><b>Definition:</b> logsink.cpp:46</div></div>
<div class="ttc" id="classyage_1_1LogSink_html_ab7b70959364771b105c0dffa0b64c38e"><div class="ttname"><a href="classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e">yage::LogSink::LogSink</a></div><div class="ttdeci">LogSink(T impl)</div><div class="ttdef"><b>Definition:</b> logsink.h:71</div></div>
-<div class="ttc" id="namespaceyage_html_ad537beeea51c8314e407fadd24affc34"><div class="ttname"><a href="namespaceyage.html#ad537beeea51c8314e407fadd24affc34">yage::makeFileSink</a></div><div class="ttdeci">LogSink makeFileSink(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> logsink.cpp:95</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Model_html_a207d650bb7d170236eff7b705228e3d9"><div class="ttname"><a href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">yage::LogSink::Model::Model</a></div><div class="ttdeci">Model(T impl_i)</div><div class="ttdef"><b>Definition:</b> logsink.h:76</div></div>
+<div class="ttc" id="namespaceyage_html_ad537beeea51c8314e407fadd24affc34"><div class="ttname"><a href="namespaceyage.html#ad537beeea51c8314e407fadd24affc34">yage::makeFileSink</a></div><div class="ttdeci">LogSink makeFileSink(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> logsink.cpp:124</div></div>
<div class="ttc" id="classyage_1_1LogSink_html_ac41716cf03dac6311cb7287c9edf8a8d"><div class="ttname"><a href="classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d">yage::LogSink::write</a></div><div class="ttdeci">void write(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const </div><div class="ttdef"><b>Definition:</b> logsink.cpp:41</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Concept_html_a1d46d97ab5cec0d30b86fda9d20cd69d"><div class="ttname"><a href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">yage::LogSink::Concept::clone</a></div><div class="ttdeci">virtual Concept * clone() const =0</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Concept_html"><div class="ttname"><a href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></div><div class="ttdef"><b>Definition:</b> logsink.h:39</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Concept_html_ada9b09f3614787df485134262b1bc7f1"><div class="ttname"><a href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">yage::LogSink::Concept::~Concept</a></div><div class="ttdeci">virtual ~Concept()=default</div></div>
<div class="ttc" id="classyage_1_1LogSink_html_a1ba5b4000f07f581e0d0c2babb2811dc"><div class="ttname"><a href="classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc">yage::LogSink::operator=</a></div><div class="ttdeci">LogSink &amp; operator=(const LogSink &amp;sink)</div><div class="ttdef"><b>Definition:</b> logsink.cpp:24</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">yage::key::T</a></div></div>
<div class="ttc" id="logmessage_8h_html"><div class="ttname"><a href="logmessage_8h.html">logmessage.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Concept_html_a3b752fd501daae85f1b78e5d0df912ac"><div class="ttname"><a href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">yage::LogSink::Concept::write</a></div><div class="ttdeci">virtual void write(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const =0</div></div>
-<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:36</div></div>
+<div class="ttc" id="structyage_1_1LogMessage_1_1Meta_html"><div class="ttname"><a href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></div><div class="ttdef"><b>Definition:</b> logmessage.h:38</div></div>
<div class="ttc" id="classyage_1_1LogSink_html_abe2e73398ecb925233b50be5d15e20f9"><div class="ttname"><a href="classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9">yage::LogSink::operator==</a></div><div class="ttdeci">bool operator==(const LogSink &amp;sink)</div><div class="ttdef"><b>Definition:</b> logsink.cpp:36</div></div>
-<div class="ttc" id="structyage_1_1LogSink_1_1Model_html"><div class="ttname"><a href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model</a></div><div class="ttdef"><b>Definition:</b> logsink.h:48</div></div>
<div class="ttc" id="classyage_1_1LogSink_html"><div class="ttname"><a href="classyage_1_1LogSink.html">yage::LogSink</a></div><div class="ttdef"><b>Definition:</b> logsink.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -220,7 +210,7 @@ $(document).ready(function(){initNavTree('logsink_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="logsink_8h.html">logsink.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/matrix_8dox.html b/matrix_8dox.html
index c3762242..b07073d2 100644
--- a/matrix_8dox.html
+++ b/matrix_8dox.html
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('matrix_8dox.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="matrix_8dox.html">matrix.dox</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/matrix_8h.html b/matrix_8h.html
index 977ceaf3..3e7bcce4 100644
--- a/matrix_8h.html
+++ b/matrix_8h.html
@@ -232,7 +232,8 @@ Functions</h2></td></tr>
<tr class="separator:a277125ad9fa06a7119c59d350e129985"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -240,7 +241,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html">math</a></li><li class="navelem"><a class="el" href="matrix_8h.html">matrix.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/matrix_8h_source.html b/matrix_8h_source.html
index 2aae5287..03d29a59 100644
--- a/matrix_8h_source.html
+++ b/matrix_8h_source.html
@@ -132,24 +132,24 @@ $(document).ready(function(){initNavTree('matrix_8h_source.html','');});
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1details_1_1Row.html">Row</a></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8"> 50</a></span>&#160; <a class="code" href="classyage_1_1Matrix.html">Matrix&lt;Rows, Cols, Type&gt;</a> *<a class="code" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3"> 51</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classyage_1_1Matrix.html">Matrix&lt;Rows, Cols, Type&gt;</a> *parent_;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">int</span> index_;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06"> 54</a></span>&#160; <a class="code" href="classyage_1_1details_1_1Row.html">Row&lt;Rows, Cols, Type&gt;</a>(<a class="code" href="classyage_1_1Matrix.html">Matrix&lt;Rows, Cols, Type&gt;</a> *parent, <span class="keywordtype">int</span> index)</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; : <a class="code" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a>(parent), <a class="code" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a>(index)</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; : parent_(parent), index_(index)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190"> 59</a></span>&#160; Type &amp;<a class="code" href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190">operator[]</a>(<span class="keywordtype">int</span> col)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// The index is the y-position of the element in the matrix</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a>-&gt;data_[<a class="code" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a> * Cols + col];</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> parent_-&gt;data_[index_ * Cols + col];</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736"> 65</a></span>&#160; <span class="keyword">const</span> Type &amp;<a class="code" href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736">operator[]</a>(<span class="keywordtype">int</span> col)<span class="keyword"> const</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"> </span>{</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">parent_</a>-&gt;data_[<a class="code" href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">index_</a> * Cols + col];</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> parent_-&gt;data_[index_ * Cols + col];</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;};</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
@@ -511,7 +511,6 @@ $(document).ready(function(){initNavTree('matrix_8h_source.html','');});
<div class="ttc" id="namespaceyage_html_a5ddd829cb1c7c4c880d0fd53326858fe"><div class="ttname"><a href="namespaceyage.html#a5ddd829cb1c7c4c880d0fd53326858fe">yage::operator==</a></div><div class="ttdeci">bool operator==(const Matrix&lt; M, N, T &gt; &amp;lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)</div><div class="ttdef"><b>Definition:</b> matrix.h:273</div></div>
<div class="ttc" id="classyage_1_1Vector3_html_a3076edb39227c1fcc77a8160fb9c5832"><div class="ttname"><a href="classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832">yage::Vector3::y</a></div><div class="ttdeci">Type &amp; y</div><div class="ttdef"><b>Definition:</b> matrix.h:356</div></div>
<div class="ttc" id="classyage_1_1Matrix_html_a20ea5fe16d27ef15f775b5497cadc851"><div class="ttname"><a href="classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851">yage::Matrix::end</a></div><div class="ttdeci">std::vector&lt; Type &gt;::iterator end()</div><div class="ttdoc">Iterator support for the end. </div><div class="ttdef"><b>Definition:</b> matrix.h:134</div></div>
-<div class="ttc" id="classyage_1_1details_1_1Row_html_a438164456acdb9e20c3e13ef9e43d5b3"><div class="ttname"><a href="classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3">yage::details::Row::index_</a></div><div class="ttdeci">int index_</div><div class="ttdef"><b>Definition:</b> matrix.h:51</div></div>
<div class="ttc" id="classyage_1_1Vector3_html_aca2fa665275db5e0b842f64106b0c797"><div class="ttname"><a href="classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797">yage::Vector3::x</a></div><div class="ttdeci">Type &amp; x</div><div class="ttdef"><b>Definition:</b> matrix.h:356</div></div>
<div class="ttc" id="classyage_1_1Vector_html_a81efa1cb9d4ce8bb8c5cf9652a5650a2"><div class="ttname"><a href="classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2">yage::Vector::operator[]</a></div><div class="ttdeci">Type &amp; operator[](int col)</div><div class="ttdef"><b>Definition:</b> matrix.h:306</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6">yage::key::R</a></div></div>
@@ -521,7 +520,6 @@ $(document).ready(function(){initNavTree('matrix_8h_source.html','');});
<div class="ttc" id="classyage_1_1Vector2_html_a554645b415a76af47698985b7757f0c2"><div class="ttname"><a href="classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2">yage::Vector2::y</a></div><div class="ttdeci">Type &amp; y()</div><div class="ttdef"><b>Definition:</b> matrix.h:344</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee">yage::key::Q</a></div></div>
<div class="ttc" id="classyage_1_1details_1_1Row_html_a703d4eee36d93b1227ad734bdcf27190"><div class="ttname"><a href="classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190">yage::details::Row::operator[]</a></div><div class="ttdeci">Type &amp; operator[](int col)</div><div class="ttdef"><b>Definition:</b> matrix.h:59</div></div>
-<div class="ttc" id="classyage_1_1details_1_1Row_html_a9c781b74460f4cb429de8838f74857d8"><div class="ttname"><a href="classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8">yage::details::Row::parent_</a></div><div class="ttdeci">Matrix&lt; Rows, Cols, Type &gt; * parent_</div><div class="ttdef"><b>Definition:</b> matrix.h:50</div></div>
<div class="ttc" id="classyage_1_1Matrix_html_a74475218328d6ef69701a6e261df925b"><div class="ttname"><a href="classyage_1_1Matrix.html#a74475218328d6ef69701a6e261df925b">yage::Matrix::getCol</a></div><div class="ttdeci">Matrix&lt; Rows, 1, Type &gt; getCol(int col) const </div><div class="ttdoc">Get a specific column in a column vector. </div><div class="ttdef"><b>Definition:</b> matrix.h:115</div></div>
<div class="ttc" id="classyage_1_1details_1_1Row_html_adf2f7047871fdc78ba66d9d08cd07736"><div class="ttname"><a href="classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736">yage::details::Row::operator[]</a></div><div class="ttdeci">const Type &amp; operator[](int col) const </div><div class="ttdef"><b>Definition:</b> matrix.h:65</div></div>
<div class="ttc" id="classyage_1_1Vector4_html_a111ecbf09543e8fafaf3aedef77d168d"><div class="ttname"><a href="classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d">yage::Vector4::w</a></div><div class="ttdeci">w(this-&gt;data_[3])</div><div class="ttdef"><b>Definition:</b> matrix.h:391</div></div>
@@ -557,7 +555,7 @@ $(document).ready(function(){initNavTree('matrix_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_aa7f86daaaa64c448f636c0e65de2cec.html">math</a></li><li class="navelem"><a class="el" href="matrix_8h.html">matrix.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/md_yage_physics_README.html b/md_yage_physics_README.html
index 3b6ae888..293d26c4 100644
--- a/md_yage_physics_README.html
+++ b/md_yage_physics_README.html
@@ -111,7 +111,7 @@ $(document).ready(function(){initNavTree('md_yage_physics_README.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespacemembers.html b/namespacemembers.html
index 9a9b4d9e..33d48af8 100644
--- a/namespacemembers.html
+++ b/namespacemembers.html
@@ -188,8 +188,8 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>D
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5">yage</a>
</li>
-<li>decodePNG()
-: <a class="el" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">yage</a>
+<li>DEBUG
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage</a>
</li>
<li>DELETE
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e">yage</a>
@@ -216,6 +216,9 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>EQUAL
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44">yage</a>
</li>
+<li>ERROR
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage</a>
+</li>
<li>ESCAPE
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d">yage</a>
</li>
@@ -301,6 +304,9 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>F9
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9">yage</a>
</li>
+<li>FATAL
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage</a>
+</li>
<li>FULLSCREEN
: <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">yage</a>
</li>
@@ -337,6 +343,9 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>I
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f">yage</a>
</li>
+<li>INFO
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage</a>
+</li>
<li>init()
: <a class="el" href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce">yage</a>
</li>
@@ -360,9 +369,6 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>key
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage</a>
</li>
-<li>key_callback()
-: <a class="el" href="namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec">yage</a>
-</li>
<li>KP_0
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52">yage</a>
</li>
@@ -442,6 +448,9 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>LEFT_SUPER
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde">yage</a>
</li>
+<li>LogLevel
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage</a>
+</li>
</ul>
@@ -678,6 +687,9 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<li>W
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276">yage</a>
</li>
+<li>WARNING
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage</a>
+</li>
<li>WindowFlags
: <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage</a>
</li>
@@ -714,7 +726,7 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html
index 14f4b49b..b325e2c4 100644
--- a/namespacemembers_enum.html
+++ b/namespacemembers_enum.html
@@ -117,6 +117,9 @@ $(document).ready(function(){initNavTree('namespacemembers_enum.html','');});
<li>key
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage</a>
</li>
+<li>LogLevel
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage</a>
+</li>
<li>WindowFlags
: <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage</a>
</li>
@@ -126,7 +129,7 @@ $(document).ready(function(){initNavTree('namespacemembers_enum.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespacemembers_eval.html b/namespacemembers_eval.html
index 107cc428..ffdd9787 100644
--- a/namespacemembers_eval.html
+++ b/namespacemembers_eval.html
@@ -188,6 +188,9 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<li>D
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5">yage</a>
</li>
+<li>DEBUG
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">yage</a>
+</li>
<li>DELETE
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e">yage</a>
</li>
@@ -210,6 +213,9 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<li>EQUAL
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44">yage</a>
</li>
+<li>ERROR
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">yage</a>
+</li>
<li>ESCAPE
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d">yage</a>
</li>
@@ -295,6 +301,9 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<li>F9
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9">yage</a>
</li>
+<li>FATAL
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">yage</a>
+</li>
<li>FULLSCREEN
: <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">yage</a>
</li>
@@ -328,6 +337,9 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<li>I
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f">yage</a>
</li>
+<li>INFO
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">yage</a>
+</li>
<li>INSERT
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b">yage</a>
</li>
@@ -597,6 +609,9 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<li>W
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276">yage</a>
</li>
+<li>WARNING
+: <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">yage</a>
+</li>
<li>WORLD_1
: <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566">yage</a>
</li>
@@ -630,7 +645,7 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespacemembers_func.html b/namespacemembers_func.html
index 39708965..ab22a478 100644
--- a/namespacemembers_func.html
+++ b/namespacemembers_func.html
@@ -114,9 +114,6 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
<div class="contents">
&#160;<ul>
-<li>decodePNG()
-: <a class="el" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">yage</a>
-</li>
<li>dot()
: <a class="el" href="namespaceyage_1_1matrix.html#ac4d2f55a5c3369ec42001776a582c30a">yage::matrix</a>
</li>
@@ -126,9 +123,6 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
<li>init()
: <a class="el" href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce">yage</a>
</li>
-<li>key_callback()
-: <a class="el" href="namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec">yage</a>
-</li>
<li>makeConsoleSink()
: <a class="el" href="namespaceyage.html#ab54350a8dbf59338c99ab4f43cfa2858">yage</a>
</li>
@@ -142,10 +136,10 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
: <a class="el" href="namespaceyage.html#ad8903f6a93ac89f16846458540717507">yage</a>
</li>
<li>operator+()
-: <a class="el" href="namespaceyage.html#a947133b8fc764d9fc5c5d8b08821cf32">yage</a>
+: <a class="el" href="namespaceyage.html#a6b77afaa1cd077df90b9daccbfc2cbae">yage</a>
</li>
<li>operator-()
-: <a class="el" href="namespaceyage.html#ad9344d41af72f29cd6f8cf1ef62ed3cc">yage</a>
+: <a class="el" href="namespaceyage.html#a8a9db24697f649f6d19f0347330d95fe">yage</a>
</li>
<li>operator/()
: <a class="el" href="namespaceyage.html#acca4a23afb94173695bbc1e1f2cde2b3">yage</a>
@@ -168,7 +162,7 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespacemembers_type.html b/namespacemembers_type.html
index ba755586..2cc59ff0 100644
--- a/namespacemembers_type.html
+++ b/namespacemembers_type.html
@@ -150,7 +150,7 @@ $(document).ready(function(){initNavTree('namespacemembers_type.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespaces.html b/namespaces.html
index 6b08268a..9009a255 100644
--- a/namespaces.html
+++ b/namespaces.html
@@ -120,7 +120,7 @@ $(document).ready(function(){initNavTree('namespaces.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespaceyage.html b/namespaceyage.html
index 1f9a7c53..05676958 100644
--- a/namespaceyage.html
+++ b/namespaceyage.html
@@ -130,13 +130,13 @@ Namespaces</h2></td></tr>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Camera.html">Camera</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html">GlslProgram</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1ImageLoader.html">ImageLoader</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1IoManager.html">IoManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Logger.html">Logger</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><h2><a class="el" href="classyage_1_1Logger.html" title="Logger">Logger</a></h2>
+ <a href="classyage_1_1Logger.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -144,21 +144,14 @@ Classes</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1ResourceManager.html">ResourceManager</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html">Sprite</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html">Glyph</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classyage_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture. <a href="classyage_1_1Glyph.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html">RenderBatch</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html">SpriteSheet</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteSheet.html">SpriteSheet</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Window.html">Window</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html">Texture</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1TextureCache.html">TextureCache</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Position.html">Position</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Colour.html">Colour</a></td></tr>
@@ -167,8 +160,6 @@ Classes</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Vertex.html">Vertex</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Window.html">Window</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Matrix.html">Matrix</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class used by other similar classes. <a href="classyage_1_1Matrix.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -195,6 +186,21 @@ Classes</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RigidBody.html">RigidBody</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Batch.html">Batch</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="classyage_1_1Batch.html" title="The Batch class will be the base class for all the different batching processes that might use differ...">Batch</a> class will be the base class for all the different batching processes that might use different shaders and attributes. <a href="classyage_1_1Batch.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Drawable.html">Drawable</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Rectangle.html">Rectangle</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html">Shader</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shape.html">Shape</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Sprite.html">Sprite</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html">SpriteBatch</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Active.html">Active</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SyncQueue.html">SyncQueue</a></td></tr>
@@ -226,6 +232,22 @@ Typedefs</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
+<tr class="memitem:a4ac616fa26af17775ed558a4c08e4788"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> { <br/>
+&#160;&#160;<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15">LogLevel::DEBUG</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3">LogLevel::INFO</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b">LogLevel::WARNING</a>,
+<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5">LogLevel::ERROR</a>,
+<br/>
+&#160;&#160;<a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc">LogLevel::FATAL</a>
+<br/>
+ }</td></tr>
+<tr class="separator:a4ac616fa26af17775ed558a4c08e4788"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a09d41deeced5fca5df9dc680c9e77c38"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">WindowFlags</a> : unsigned { <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">SHOWN</a> = 0x1,
+<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">HIDDEN</a> = 0x2,
+<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">FULLSCREEN</a> = 0x4,
+<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">BORDERLESS</a> = 0x8
+ }</td></tr>
+<tr class="separator:a09d41deeced5fca5df9dc680c9e77c38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5a9307442e5daa8810aff942564a822"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a> { <br/>
&#160;&#160;<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3">key::UNKNOWN</a> = GLFW_KEY_UNKNOWN,
<a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57">key::SPACE</a> = GLFW_KEY_SPACE,
@@ -382,12 +404,6 @@ Enumerations</h2></td></tr>
<br/>
}</td></tr>
<tr class="separator:ad5a9307442e5daa8810aff942564a822"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09d41deeced5fca5df9dc680c9e77c38"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">WindowFlags</a> : unsigned { <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">SHOWN</a> = 0x1,
-<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">HIDDEN</a> = 0x2,
-<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">FULLSCREEN</a> = 0x4,
-<a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">BORDERLESS</a> = 0x8
- }</td></tr>
-<tr class="separator:a09d41deeced5fca5df9dc680c9e77c38"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
@@ -397,10 +413,6 @@ Functions</h2></td></tr>
<tr class="separator:ad537beeea51c8314e407fadd24affc34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b288197f6a97f197dda60e5b54f1841"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1LogSink.html">LogSink</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a6b288197f6a97f197dda60e5b54f1841">makeFileSink</a> (std::string &amp;&amp;filename)</td></tr>
<tr class="separator:a6b288197f6a97f197dda60e5b54f1841"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cf122e98752ed702393cbe30df51356"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">decodePNG</a> (std::vector&lt; unsigned char &gt; &amp;out_image, unsigned long &amp;image_width, unsigned long &amp;image_height, const unsigned char *in_png, size_t in_size, bool convert_to_rgba32)</td></tr>
-<tr class="separator:a0cf122e98752ed702393cbe30df51356"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7d04f91ba8586cb6dfac030f83c9a9ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec">key_callback</a> (GLFWwindow *window, int <a class="el" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a>, int scanCode, int action, int mods)</td></tr>
-<tr class="separator:a7d04f91ba8586cb6dfac030f83c9a9ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a226cc29763f745fd175844f4263d5dae"><td class="memTemplParams" colspan="2">template&lt;int M, int N, class T &gt; </td></tr>
<tr class="memitem:a226cc29763f745fd175844f4263d5dae"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classyage_1_1Matrix.html">Matrix</a>&lt; M, N, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a226cc29763f745fd175844f4263d5dae">operator+</a> (<a class="el" href="classyage_1_1Matrix.html">Matrix</a>&lt; M, N, T &gt; lhs, const <a class="el" href="classyage_1_1Matrix.html">Matrix</a>&lt; M, N, T &gt; &amp;rhs)</td></tr>
<tr class="separator:a226cc29763f745fd175844f4263d5dae"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -444,8 +456,9 @@ Functions</h2></td></tr>
<tr class="separator:ac9d8c7327204686b3c86f4ab48672618"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>remove the include to make compilation faster </dd></dl>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>think of removing this, by, for example, using a pointer This could be more efficient when copying the texture out of the spritesheet.</dd></dl>
+<div class="textblock"><p>Project namespace. </p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>remove the include to make compilation faster </dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>think of removing this, by, for example, using a pointer This could be more efficient when copying the texture out of the spritesheet.</dd></dl>
<p>Avoids collision as all the classes and global functions are wrapped in. it. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a23eef341099a6b2816cf0c63f8ffe898"></a>
@@ -458,6 +471,8 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Definition of a 2D vector. </p>
+
</div>
</div>
<a class="anchor" id="aea25e39fde2b6a8abab71cc27371d339"></a>
@@ -494,6 +509,8 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Definition of a 3D vector. </p>
+
</div>
</div>
<a class="anchor" id="ae04792ab12e05bcb11c0316b142ebeec"></a>
@@ -530,6 +547,8 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Definition of a 4D vector. </p>
+
</div>
</div>
<a class="anchor" id="a1896ae5c4cfed1453dadf21a4a2a48cf"></a>
@@ -823,79 +842,61 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38"></a>
+<a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788"></a>
<div class="memitem">
<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">enum <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage::WindowFlags</a> : unsigned</td>
+ <td class="memname">enum <a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">yage::LogLevel</a></td>
</tr>
</table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
</div><div class="memdoc">
<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"></a>SHOWN</em>&#160;</td><td class="fielddoc">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15"></a>DEBUG</em>&#160;</td><td class="fielddoc">
</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"></a>HIDDEN</em>&#160;</td><td class="fielddoc">
+<tr><td class="fieldname"><em><a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3"></a>INFO</em>&#160;</td><td class="fielddoc">
</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"></a>FULLSCREEN</em>&#160;</td><td class="fielddoc">
+<tr><td class="fieldname"><em><a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b"></a>WARNING</em>&#160;</td><td class="fielddoc">
</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"></a>BORDERLESS</em>&#160;</td><td class="fielddoc">
+<tr><td class="fieldname"><em><a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5"></a>ERROR</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc"></a>FATAL</em>&#160;</td><td class="fielddoc">
</td></tr>
</table>
</div>
</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a0cf122e98752ed702393cbe30df51356"></a>
+<a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">int yage::decodePNG </td>
- <td>(</td>
- <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
- <td class="paramname"><em>out_image</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long &amp;&#160;</td>
- <td class="paramname"><em>image_width</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned long &amp;&#160;</td>
- <td class="paramname"><em>image_height</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const unsigned char *&#160;</td>
- <td class="paramname"><em>in_png</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&#160;</td>
- <td class="paramname"><em>convert_to_rgba32</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
+ <td class="memname">enum <a class="el" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage::WindowFlags</a> : unsigned</td>
</tr>
</table>
</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"></a>SHOWN</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"></a>HIDDEN</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"></a>FULLSCREEN</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"></a>BORDERLESS</em>&#160;</td><td class="fielddoc">
+</td></tr>
+</table>
</div>
</div>
+<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0bd2fedcbe862fdea1ea54b6b7d49bec"></a>
<div class="memitem">
<div class="memproto">
@@ -934,55 +935,13 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Initializes yage. </p>
<p>This is only there to initialize glfw.</p>
<dl class="section return"><dt>Returns</dt><dd>Returns true if the initialization was successful. </dd></dl>
</div>
</div>
-<a class="anchor" id="a7d04f91ba8586cb6dfac030f83c9a9ec"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void yage::key_callback </td>
- <td>(</td>
- <td class="paramtype">GLFWwindow *&#160;</td>
- <td class="paramname"><em>window</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&#160;</td>
- <td class="paramname"><em>key</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&#160;</td>
- <td class="paramname"><em>scanCode</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&#160;</td>
- <td class="paramname"><em>action</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int&#160;</td>
- <td class="paramname"><em>mods</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="ab54350a8dbf59338c99ab4f43cfa2858"></a>
<div class="memitem">
<div class="memproto">
@@ -1350,6 +1309,8 @@ template&lt;int M, int N, class T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Quit and cleanup yage. </p>
<p>glfw needs to clean itself up. </p>
</div>
@@ -1360,7 +1321,7 @@ template&lt;int M, int N, class T &gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespaceyage.js b/namespaceyage.js
index 2dd63502..3ef54125 100644
--- a/namespaceyage.js
+++ b/namespaceyage.js
@@ -3,25 +3,20 @@ var namespaceyage =
[ "details", "namespaceyage_1_1details.html", "namespaceyage_1_1details" ],
[ "matrix", "namespaceyage_1_1matrix.html", null ],
[ "Camera", "classyage_1_1Camera.html", "classyage_1_1Camera" ],
- [ "GlslProgram", "classyage_1_1GlslProgram.html", "classyage_1_1GlslProgram" ],
[ "ImageLoader", "classyage_1_1ImageLoader.html", "classyage_1_1ImageLoader" ],
[ "IoManager", "classyage_1_1IoManager.html", "classyage_1_1IoManager" ],
[ "Logger", "classyage_1_1Logger.html", "classyage_1_1Logger" ],
[ "LogMessage", "classyage_1_1LogMessage.html", "classyage_1_1LogMessage" ],
[ "LogSink", "classyage_1_1LogSink.html", "classyage_1_1LogSink" ],
[ "ResourceManager", "classyage_1_1ResourceManager.html", "classyage_1_1ResourceManager" ],
- [ "Sprite", "classyage_1_1Sprite.html", "classyage_1_1Sprite" ],
- [ "Glyph", "classyage_1_1Glyph.html", "classyage_1_1Glyph" ],
- [ "RenderBatch", "classyage_1_1RenderBatch.html", "classyage_1_1RenderBatch" ],
- [ "SpriteBatch", "classyage_1_1SpriteBatch.html", "classyage_1_1SpriteBatch" ],
[ "SpriteSheet", "classyage_1_1SpriteSheet.html", "classyage_1_1SpriteSheet" ],
- [ "Texture", "structyage_1_1Texture.html", "structyage_1_1Texture" ],
[ "TextureCache", "classyage_1_1TextureCache.html", "classyage_1_1TextureCache" ],
+ [ "Window", "classyage_1_1Window.html", "classyage_1_1Window" ],
+ [ "Texture", "structyage_1_1Texture.html", "structyage_1_1Texture" ],
[ "Position", "structyage_1_1Position.html", "structyage_1_1Position" ],
[ "Colour", "structyage_1_1Colour.html", "structyage_1_1Colour" ],
[ "UV", "structyage_1_1UV.html", "structyage_1_1UV" ],
[ "Vertex", "structyage_1_1Vertex.html", "structyage_1_1Vertex" ],
- [ "Window", "classyage_1_1Window.html", "classyage_1_1Window" ],
[ "Matrix", "classyage_1_1Matrix.html", "classyage_1_1Matrix" ],
[ "Vector", "classyage_1_1Vector.html", "classyage_1_1Vector" ],
[ "Vector2", "classyage_1_1Vector2.html", "classyage_1_1Vector2" ],
@@ -33,6 +28,13 @@ var namespaceyage =
[ "ParticleBody", "classyage_1_1ParticleBody.html", "classyage_1_1ParticleBody" ],
[ "RectangleCollider", "classyage_1_1RectangleCollider.html", "classyage_1_1RectangleCollider" ],
[ "RigidBody", "classyage_1_1RigidBody.html", "classyage_1_1RigidBody" ],
+ [ "Batch", "classyage_1_1Batch.html", "classyage_1_1Batch" ],
+ [ "Drawable", "classyage_1_1Drawable.html", "classyage_1_1Drawable" ],
+ [ "Rectangle", "classyage_1_1Rectangle.html", "classyage_1_1Rectangle" ],
+ [ "Shader", "classyage_1_1Shader.html", "classyage_1_1Shader" ],
+ [ "Shape", "classyage_1_1Shape.html", "classyage_1_1Shape" ],
+ [ "Sprite", "classyage_1_1Sprite.html", "classyage_1_1Sprite" ],
+ [ "SpriteBatch", "classyage_1_1SpriteBatch.html", "classyage_1_1SpriteBatch" ],
[ "Active", "classyage_1_1Active.html", "classyage_1_1Active" ],
[ "SyncQueue", "classyage_1_1SyncQueue.html", "classyage_1_1SyncQueue" ]
]; \ No newline at end of file
diff --git a/namespaceyage_1_1details.html b/namespaceyage_1_1details.html
index 96b56301..3c955db6 100644
--- a/namespaceyage_1_1details.html
+++ b/namespaceyage_1_1details.html
@@ -118,6 +118,11 @@ Classes</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1details_1_1Row.html">Row</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">RenderBatch</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html">Glyph</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture. <a href="structyage_1_1details_1_1Glyph.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
@@ -144,7 +149,7 @@ Typedefs</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1details.html">details</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/namespaceyage_1_1details.js b/namespaceyage_1_1details.js
index fdcb81ee..84b71ea0 100644
--- a/namespaceyage_1_1details.js
+++ b/namespaceyage_1_1details.js
@@ -1,5 +1,7 @@
var namespaceyage_1_1details =
[
[ "Coordinate", "structyage_1_1details_1_1Coordinate.html", "structyage_1_1details_1_1Coordinate" ],
- [ "Row", "classyage_1_1details_1_1Row.html", "classyage_1_1details_1_1Row" ]
+ [ "Row", "classyage_1_1details_1_1Row.html", "classyage_1_1details_1_1Row" ],
+ [ "RenderBatch", "structyage_1_1details_1_1RenderBatch.html", "structyage_1_1details_1_1RenderBatch" ],
+ [ "Glyph", "structyage_1_1details_1_1Glyph.html", "structyage_1_1details_1_1Glyph" ]
]; \ No newline at end of file
diff --git a/namespaceyage_1_1matrix.html b/namespaceyage_1_1matrix.html
index d1adc39f..d3711d5e 100644
--- a/namespaceyage_1_1matrix.html
+++ b/namespaceyage_1_1matrix.html
@@ -130,7 +130,8 @@ Functions</h2></td></tr>
<tr class="separator:a277125ad9fa06a7119c59d350e129985"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Implementations defined here are meant to operate on anything that inherits from the base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class. </p>
+<div class="textblock"><p>Namespace containing functions that operate on matrices. </p>
+<p>Implementations defined here are meant to operate on anything that inherits from the base <a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> class. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ac4d2f55a5c3369ec42001776a582c30a"></a>
<div class="memitem">
@@ -157,6 +158,8 @@ template&lt;int R, class T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Returns the dot product between two vectors. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m1,m2</td><td>Input matrices. </td></tr>
@@ -191,6 +194,8 @@ template&lt;int M, int N, int P, int Q, class T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Multiplies two matrices together. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m1,m2</td><td><a class="el" href="classyage_1_1Matrix.html" title="Base Matrix class used by other similar classes. ">Matrix</a> inputs</td></tr>
@@ -198,7 +203,7 @@ template&lt;int M, int N, int P, int Q, class T &gt; </div>
</dd>
</dl>
<p>Requires the two matrices to be compatible with multiplication. </p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>Think if this should be a static_assert. </dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>Think if this should be a static_assert. </dd></dl>
<p>Performs multiplication by getting the rows and columns, transposing one of them and then doting the result. </p>
</div>
@@ -218,6 +223,8 @@ template&lt;int M, int N, class T &gt; </div>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Transposes a matrix and returns the result. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>input matrix. </td></tr>
@@ -233,7 +240,7 @@ template&lt;int M, int N, class T &gt; </div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1matrix.html">matrix</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/navtree.js b/navtree.js
index cf009008..ef75b377 100644
--- a/navtree.js
+++ b/navtree.js
@@ -31,7 +31,10 @@ var NAVTREE =
[ "File List", "files.html", "files" ],
[ "File Members", "globals.html", [
[ "All", "globals.html", null ],
+ [ "Functions", "globals_func.html", null ],
[ "Variables", "globals_vars.html", null ],
+ [ "Typedefs", "globals_type.html", null ],
+ [ "Enumerator", "globals_eval.html", null ],
[ "Macros", "globals_defs.html", null ]
] ]
] ]
@@ -41,8 +44,8 @@ var NAVTREE =
var NAVTREEINDEX =
[
"active_8cpp.html",
-"classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0",
-"matrix_8h.html#a947133b8fc764d9fc5c5d8b08821cf32"
+"functions_g.html",
+"shader_8h_source.html"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/navtreeindex0.js b/navtreeindex0.js
index c3e0fd87..562333a0 100644
--- a/navtreeindex0.js
+++ b/navtreeindex0.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX0 =
{
-"active_8cpp.html":[6,0,0,3,0],
-"active_8h.html":[6,0,0,3,1],
-"active_8h_source.html":[6,0,0,3,1],
+"active_8cpp.html":[6,0,0,5,0],
+"active_8h.html":[6,0,0,5,1],
+"active_8h_source.html":[6,0,0,5,1],
"annotated.html":[5,0],
-"body_8cpp.html":[6,0,0,2,0],
-"body_8h.html":[6,0,0,2,1],
-"body_8h_source.html":[6,0,0,2,1],
+"batch_8h.html":[6,0,0,4,0],
+"batch_8h_source.html":[6,0,0,4,0],
+"body_8cpp.html":[6,0,0,3,0],
+"body_8h.html":[6,0,0,3,1],
+"body_8h_source.html":[6,0,0,3,1],
"bug.html":[3],
"camera_8cpp.html":[6,0,0,0,0],
"camera_8h.html":[6,0,0,0,1],
"camera_8h_source.html":[6,0,0,0,1],
-"classLogLevel.html":[5,0,1],
-"classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec":[5,0,1,0],
"classes.html":[5,1],
-"classyage_1_1Active.html":[5,0,0,33],
-"classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc":[5,0,0,33,0],
-"classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326":[5,0,0,33,7],
-"classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd":[5,0,0,33,1],
-"classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3":[5,0,0,33,8],
-"classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064":[5,0,0,33,4],
-"classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b":[5,0,0,33,6],
-"classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2":[5,0,0,33,2],
-"classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db":[5,0,0,33,9],
-"classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50":[5,0,0,33,10],
-"classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b":[5,0,0,33,3],
-"classyage_1_1Active.html#add837044e73e4bc9849f09495535600c":[5,0,0,33,5],
-"classyage_1_1Body.html":[5,0,0,27],
-"classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289":[5,0,0,27,9],
-"classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364":[5,0,0,27,4],
-"classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36":[5,0,0,27,2],
-"classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d":[5,0,0,27,6],
-"classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f":[5,0,0,27,5],
-"classyage_1_1Body.html#a454a7c59d07c94afb0a35c3d53ec2191":[5,0,0,27,8],
-"classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766":[5,0,0,27,7],
-"classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878":[5,0,0,27,1],
-"classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225":[5,0,0,27,3],
-"classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157":[5,0,0,27,10],
-"classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86":[5,0,0,27,0],
-"classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741":[5,0,0,27,11],
+"classyage_1_1Active.html":[5,0,0,35],
+"classyage_1_1Active.html#a4b82fec6f02c00d186b1b840ce8f11dc":[5,0,0,35,0],
+"classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326":[5,0,0,35,5],
+"classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd":[5,0,0,35,1],
+"classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064":[5,0,0,35,3],
+"classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2":[5,0,0,35,2],
+"classyage_1_1Active.html#add837044e73e4bc9849f09495535600c":[5,0,0,35,4],
+"classyage_1_1Batch.html":[5,0,0,28],
+"classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477":[5,0,0,28,2],
+"classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e":[5,0,0,28,1],
+"classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65":[5,0,0,28,3],
+"classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d":[5,0,0,28,0],
+"classyage_1_1Body.html":[5,0,0,22],
+"classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289":[5,0,0,22,9],
+"classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364":[5,0,0,22,4],
+"classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36":[5,0,0,22,2],
+"classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d":[5,0,0,22,6],
+"classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f":[5,0,0,22,5],
+"classyage_1_1Body.html#a454a7c59d07c94afb0a35c3d53ec2191":[5,0,0,22,8],
+"classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766":[5,0,0,22,7],
+"classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878":[5,0,0,22,1],
+"classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225":[5,0,0,22,3],
+"classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157":[5,0,0,22,10],
+"classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86":[5,0,0,22,0],
+"classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741":[5,0,0,22,11],
"classyage_1_1Camera.html":[5,0,0,2],
"classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324":[5,0,0,2,1],
"classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611":[5,0,0,2,0],
-"classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c":[5,0,0,2,7],
-"classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3":[5,0,0,2,3],
-"classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f":[5,0,0,2,6],
-"classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26":[5,0,0,2,4],
-"classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2":[5,0,0,2,5],
-"classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86":[5,0,0,2,2],
-"classyage_1_1Collider.html":[5,0,0,28],
-"classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161":[5,0,0,28,3],
-"classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9":[5,0,0,28,2],
-"classyage_1_1Collider.html#abbab9373c0805ffa5215c08b82eaed03":[5,0,0,28,1],
-"classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308":[5,0,0,28,4],
-"classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3":[5,0,0,28,0],
-"classyage_1_1CollisionBody.html":[5,0,0,29],
-"classyage_1_1CollisionBody.html#a5289e613269facc45cd451872c17a83d":[5,0,0,29,0],
-"classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b":[5,0,0,29,1],
-"classyage_1_1GlslProgram.html":[5,0,0,3],
-"classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6":[5,0,0,3,6],
-"classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2":[5,0,0,3,14],
-"classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e":[5,0,0,3,9],
-"classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d":[5,0,0,3,10],
-"classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f":[5,0,0,3,15],
-"classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9":[5,0,0,3,11],
-"classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7":[5,0,0,3,3],
-"classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970":[5,0,0,3,4],
-"classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486":[5,0,0,3,17],
-"classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad":[5,0,0,3,13],
-"classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4":[5,0,0,3,0],
-"classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3":[5,0,0,3,16],
-"classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd":[5,0,0,3,1],
-"classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4":[5,0,0,3,5],
-"classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c":[5,0,0,3,7],
-"classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f":[5,0,0,3,18],
-"classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b":[5,0,0,3,19],
-"classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27":[5,0,0,3,12],
-"classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290":[5,0,0,3,2],
-"classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7":[5,0,0,3,20],
-"classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430":[5,0,0,3,8],
-"classyage_1_1Glyph.html":[5,0,0,11],
-"classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2":[5,0,0,11,4],
-"classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f":[5,0,0,11,0],
-"classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8":[5,0,0,11,10],
-"classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec":[5,0,0,11,6],
-"classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234":[5,0,0,11,8],
-"classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d":[5,0,0,11,11],
-"classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9":[5,0,0,11,3],
-"classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2":[5,0,0,11,2],
-"classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f":[5,0,0,11,5],
-"classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa":[5,0,0,11,12],
-"classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1":[5,0,0,11,1],
-"classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704":[5,0,0,11,9],
-"classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad":[5,0,0,11,7],
-"classyage_1_1ImageLoader.html":[5,0,0,4],
-"classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32":[5,0,0,4,0],
-"classyage_1_1IoManager.html":[5,0,0,5],
-"classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d":[5,0,0,5,0],
-"classyage_1_1LogMessage.html":[5,0,0,7],
-"classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0":[5,0,0,7,4],
-"classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae":[5,0,0,7,7],
-"classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee":[5,0,0,7,11],
-"classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab":[5,0,0,7,6],
-"classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f":[5,0,0,7,3],
-"classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792":[5,0,0,7,12],
-"classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5":[5,0,0,7,10],
-"classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da":[5,0,0,7,8],
-"classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be":[5,0,0,7,2],
-"classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90":[5,0,0,7,5],
-"classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca":[5,0,0,7,1],
-"classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a":[5,0,0,7,9],
-"classyage_1_1LogSink.html":[5,0,0,8],
-"classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc":[5,0,0,8,5],
-"classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356":[5,0,0,8,6],
-"classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc":[5,0,0,8,9],
-"classyage_1_1LogSink.html#a8583ac57ebff98ab38c613c03b5bfbba":[5,0,0,8,3],
-"classyage_1_1LogSink.html#aadebaf552b839879189965faf7b504cf":[5,0,0,8,4],
-"classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e":[5,0,0,8,2],
-"classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9":[5,0,0,8,7],
-"classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d":[5,0,0,8,8],
-"classyage_1_1Logger.html":[5,0,0,6],
-"classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8":[5,0,0,6,2],
-"classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f":[5,0,0,6,8],
-"classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744":[5,0,0,6,7],
-"classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6":[5,0,0,6,5],
-"classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd":[5,0,0,6,1],
-"classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64":[5,0,0,6,0],
-"classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245":[5,0,0,6,6],
-"classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e":[5,0,0,6,4],
-"classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00":[5,0,0,6,3],
-"classyage_1_1Matrix.html":[5,0,0,22],
-"classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8":[5,0,0,22,12],
-"classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed":[5,0,0,22,14],
-"classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1":[5,0,0,22,11],
-"classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6":[5,0,0,22,10],
-"classyage_1_1Matrix.html#a191b02ff353d04f18779d4c84e20927b":[5,0,0,22,1],
-"classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851":[5,0,0,22,4],
-"classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1":[5,0,0,22,3],
-"classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad":[5,0,0,22,0],
-"classyage_1_1Matrix.html#a74475218328d6ef69701a6e261df925b":[5,0,0,22,5],
-"classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055":[5,0,0,22,2],
-"classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145":[5,0,0,22,9],
-"classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228":[5,0,0,22,7],
-"classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8":[5,0,0,22,6],
-"classyage_1_1Matrix.html#a9e9cbf0fd7c768696ef909bdac1a706d":[5,0,0,22,13],
-"classyage_1_1Matrix.html#acc2d0763f060c923ce53b37143d0a7bb":[5,0,0,22,8],
-"classyage_1_1ParticleBody.html":[5,0,0,30],
-"classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c":[5,0,0,30,2],
-"classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b":[5,0,0,30,1],
-"classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0":[5,0,0,30,0],
-"classyage_1_1RectangleCollider.html":[5,0,0,31],
-"classyage_1_1RectangleCollider.html#a81e825cf009a437bc0f61b846cac66f6":[5,0,0,31,1],
-"classyage_1_1RectangleCollider.html#ac8d8e6bdb12c21be12f7d398242147c4":[5,0,0,31,2],
-"classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969":[5,0,0,31,0],
-"classyage_1_1RenderBatch.html":[5,0,0,12],
-"classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7":[5,0,0,12,5],
-"classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba":[5,0,0,12,4],
-"classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160":[5,0,0,12,7],
-"classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853":[5,0,0,12,0],
-"classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e":[5,0,0,12,1],
-"classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f":[5,0,0,12,6],
-"classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d":[5,0,0,12,3],
-"classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944":[5,0,0,12,2],
-"classyage_1_1ResourceManager.html":[5,0,0,9],
-"classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6":[5,0,0,9,1],
-"classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25":[5,0,0,9,0],
-"classyage_1_1RigidBody.html":[5,0,0,32],
-"classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606":[5,0,0,32,0],
-"classyage_1_1Sprite.html":[5,0,0,10],
-"classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad":[5,0,0,10,10],
-"classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987":[5,0,0,10,0],
-"classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1":[5,0,0,10,5],
-"classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1":[5,0,0,10,2],
-"classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897":[5,0,0,10,7],
-"classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03":[5,0,0,10,12],
-"classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40":[5,0,0,10,4],
-"classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed":[5,0,0,10,13],
-"classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8":[5,0,0,10,11],
-"classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee":[5,0,0,10,6],
-"classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2":[5,0,0,10,3],
-"classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e":[5,0,0,10,1],
-"classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3":[5,0,0,10,8],
-"classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0":[5,0,0,10,9],
-"classyage_1_1SpriteBatch.html":[5,0,0,13],
-"classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e":[5,0,0,13,13],
-"classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1":[5,0,0,13,17],
-"classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200":[5,0,0,13,14],
-"classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d":[5,0,0,13,11],
-"classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737":[5,0,0,13,9],
-"classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f":[5,0,0,13,10],
-"classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652":[5,0,0,13,1],
-"classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027":[5,0,0,13,6],
-"classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c":[5,0,0,13,18],
-"classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5":[5,0,0,13,15],
-"classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e":[5,0,0,13,2],
-"classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008":[5,0,0,13,16],
-"classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a":[5,0,0,13,12],
-"classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c":[5,0,0,13,5],
-"classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941":[5,0,0,13,7],
-"classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872":[5,0,0,13,4],
-"classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632":[5,0,0,13,8],
-"classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a":[5,0,0,13,3],
-"classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a":[5,0,0,13,0],
-"classyage_1_1SpriteSheet.html":[5,0,0,14],
-"classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0":[5,0,0,14,3],
-"classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9":[5,0,0,14,1],
-"classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6":[5,0,0,14,0],
-"classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8":[5,0,0,14,5],
-"classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3":[5,0,0,14,4],
-"classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98":[5,0,0,14,2],
-"classyage_1_1SyncQueue.html":[5,0,0,34],
-"classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b":[5,0,0,34,0],
-"classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e":[5,0,0,34,3],
-"classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b":[5,0,0,34,8],
-"classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6":[5,0,0,34,2],
-"classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678":[5,0,0,34,6],
-"classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1":[5,0,0,34,5],
-"classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c":[5,0,0,34,1],
-"classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27":[5,0,0,34,4],
-"classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968":[5,0,0,34,9],
-"classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4":[5,0,0,34,7],
-"classyage_1_1TextureCache.html":[5,0,0,16],
-"classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692":[5,0,0,16,0],
-"classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd":[5,0,0,16,2],
-"classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e":[5,0,0,16,1],
-"classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323":[5,0,0,16,3],
-"classyage_1_1Vector.html":[5,0,0,23],
-"classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35":[5,0,0,23,4],
-"classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f":[5,0,0,23,1],
-"classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2":[5,0,0,23,3],
-"classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae":[5,0,0,23,5],
-"classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d":[5,0,0,23,2],
-"classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa":[5,0,0,23,0],
-"classyage_1_1Vector2.html":[5,0,0,24],
-"classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740":[5,0,0,24,5],
-"classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456":[5,0,0,24,7],
-"classyage_1_1Vector2.html#a3ef3bc2954f387f1db2165a884765ad0":[5,0,0,24,2],
-"classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea":[5,0,0,24,0],
-"classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2":[5,0,0,24,6],
-"classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf":[5,0,0,24,4],
-"classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822":[5,0,0,24,3],
-"classyage_1_1Vector2.html#af69d534302a406bac419589e0a2f2917":[5,0,0,24,1],
-"classyage_1_1Vector3.html":[5,0,0,25],
-"classyage_1_1Vector3.html#a163c42efd0a4f365abb612c031859820":[5,0,0,25,8],
-"classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832":[5,0,0,25,7],
-"classyage_1_1Vector3.html#a36744e7ef6c50b117e4105f1752c93c0":[5,0,0,25,2],
-"classyage_1_1Vector3.html#a745b76ba3e49f5c73f53cb065ddf337b":[5,0,0,25,0],
-"classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8":[5,0,0,25,4],
-"classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797":[5,0,0,25,6],
-"classyage_1_1Vector3.html#ad30c9989f25ef241c59a6c59661daf3a":[5,0,0,25,1],
-"classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888":[5,0,0,25,5]
+"classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0":[5,0,0,2,3],
+"classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c":[5,0,0,2,2],
+"classyage_1_1Collider.html":[5,0,0,23],
+"classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161":[5,0,0,23,3],
+"classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9":[5,0,0,23,2],
+"classyage_1_1Collider.html#abbab9373c0805ffa5215c08b82eaed03":[5,0,0,23,1],
+"classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308":[5,0,0,23,4],
+"classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3":[5,0,0,23,0],
+"classyage_1_1CollisionBody.html":[5,0,0,24],
+"classyage_1_1CollisionBody.html#a5289e613269facc45cd451872c17a83d":[5,0,0,24,0],
+"classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b":[5,0,0,24,1],
+"classyage_1_1Drawable.html":[5,0,0,29],
+"classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e":[5,0,0,29,0],
+"classyage_1_1ImageLoader.html":[5,0,0,3],
+"classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32":[5,0,0,3,0],
+"classyage_1_1IoManager.html":[5,0,0,4],
+"classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d":[5,0,0,4,0],
+"classyage_1_1LogMessage.html":[5,0,0,6],
+"classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae":[5,0,0,6,5],
+"classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab":[5,0,0,6,4],
+"classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da":[5,0,0,6,6],
+"classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be":[5,0,0,6,2],
+"classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90":[5,0,0,6,3],
+"classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca":[5,0,0,6,1],
+"classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a":[5,0,0,6,7],
+"classyage_1_1LogSink.html":[5,0,0,7],
+"classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc":[5,0,0,7,3],
+"classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356":[5,0,0,7,4],
+"classyage_1_1LogSink.html#a8583ac57ebff98ab38c613c03b5bfbba":[5,0,0,7,1],
+"classyage_1_1LogSink.html#aadebaf552b839879189965faf7b504cf":[5,0,0,7,2],
+"classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e":[5,0,0,7,0],
+"classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9":[5,0,0,7,5],
+"classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d":[5,0,0,7,6],
+"classyage_1_1Logger.html":[5,0,0,5],
+"classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8":[5,0,0,5,5],
+"classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb":[5,0,0,5,10],
+"classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2":[5,0,0,5,8],
+"classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352":[5,0,0,5,1],
+"classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd":[5,0,0,5,4],
+"classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b":[5,0,0,5,2],
+"classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64":[5,0,0,5,0],
+"classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245":[5,0,0,5,9],
+"classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074":[5,0,0,5,3],
+"classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e":[5,0,0,5,7],
+"classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00":[5,0,0,5,6],
+"classyage_1_1Matrix.html":[5,0,0,17],
+"classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8":[5,0,0,17,12],
+"classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed":[5,0,0,17,14],
+"classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1":[5,0,0,17,11],
+"classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6":[5,0,0,17,10],
+"classyage_1_1Matrix.html#a191b02ff353d04f18779d4c84e20927b":[5,0,0,17,1],
+"classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851":[5,0,0,17,4],
+"classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1":[5,0,0,17,3],
+"classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad":[5,0,0,17,0],
+"classyage_1_1Matrix.html#a74475218328d6ef69701a6e261df925b":[5,0,0,17,5],
+"classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055":[5,0,0,17,2],
+"classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145":[5,0,0,17,9],
+"classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228":[5,0,0,17,7],
+"classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8":[5,0,0,17,6],
+"classyage_1_1Matrix.html#a9e9cbf0fd7c768696ef909bdac1a706d":[5,0,0,17,13],
+"classyage_1_1Matrix.html#acc2d0763f060c923ce53b37143d0a7bb":[5,0,0,17,8],
+"classyage_1_1ParticleBody.html":[5,0,0,25],
+"classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c":[5,0,0,25,2],
+"classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b":[5,0,0,25,1],
+"classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0":[5,0,0,25,0],
+"classyage_1_1Rectangle.html":[5,0,0,30],
+"classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e":[5,0,0,30,0],
+"classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891":[5,0,0,30,1],
+"classyage_1_1RectangleCollider.html":[5,0,0,26],
+"classyage_1_1RectangleCollider.html#a81e825cf009a437bc0f61b846cac66f6":[5,0,0,26,1],
+"classyage_1_1RectangleCollider.html#ac8d8e6bdb12c21be12f7d398242147c4":[5,0,0,26,2],
+"classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969":[5,0,0,26,0],
+"classyage_1_1ResourceManager.html":[5,0,0,8],
+"classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc":[5,0,0,8,0],
+"classyage_1_1RigidBody.html":[5,0,0,27],
+"classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606":[5,0,0,27,0],
+"classyage_1_1Shader.html":[5,0,0,31],
+"classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5":[5,0,0,31,1],
+"classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab":[5,0,0,31,7],
+"classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a":[5,0,0,31,0],
+"classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a":[5,0,0,31,4],
+"classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c":[5,0,0,31,9],
+"classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd":[5,0,0,31,3],
+"classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78":[5,0,0,31,8],
+"classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215":[5,0,0,31,6],
+"classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2":[5,0,0,31,2],
+"classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05":[5,0,0,31,5],
+"classyage_1_1Shape.html":[5,0,0,32],
+"classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539":[5,0,0,32,0],
+"classyage_1_1Sprite.html":[5,0,0,33],
+"classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987":[5,0,0,33,0],
+"classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1":[5,0,0,33,5],
+"classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1":[5,0,0,33,2],
+"classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897":[5,0,0,33,7],
+"classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40":[5,0,0,33,4],
+"classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee":[5,0,0,33,6],
+"classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2":[5,0,0,33,3],
+"classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e":[5,0,0,33,1],
+"classyage_1_1SpriteBatch.html":[5,0,0,34],
+"classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d":[5,0,0,34,9],
+"classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737":[5,0,0,34,7],
+"classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f":[5,0,0,34,8],
+"classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652":[5,0,0,34,1],
+"classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5":[5,0,0,34,10],
+"classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e":[5,0,0,34,2],
+"classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0":[5,0,0,34,5],
+"classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872":[5,0,0,34,4],
+"classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632":[5,0,0,34,6],
+"classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a":[5,0,0,34,3],
+"classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a":[5,0,0,34,0],
+"classyage_1_1SpriteSheet.html":[5,0,0,9],
+"classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0":[5,0,0,9,2],
+"classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9":[5,0,0,9,1],
+"classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6":[5,0,0,9,0],
+"classyage_1_1SyncQueue.html":[5,0,0,36],
+"classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b":[5,0,0,36,0],
+"classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e":[5,0,0,36,3],
+"classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6":[5,0,0,36,2],
+"classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678":[5,0,0,36,6],
+"classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1":[5,0,0,36,5],
+"classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c":[5,0,0,36,1],
+"classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27":[5,0,0,36,4],
+"classyage_1_1TextureCache.html":[5,0,0,10],
+"classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692":[5,0,0,10,0],
+"classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd":[5,0,0,10,2],
+"classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f":[5,0,0,10,1],
+"classyage_1_1Vector.html":[5,0,0,18],
+"classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35":[5,0,0,18,4],
+"classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f":[5,0,0,18,1],
+"classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2":[5,0,0,18,3],
+"classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae":[5,0,0,18,5],
+"classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d":[5,0,0,18,2],
+"classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa":[5,0,0,18,0],
+"classyage_1_1Vector2.html":[5,0,0,19],
+"classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740":[5,0,0,19,5],
+"classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456":[5,0,0,19,7],
+"classyage_1_1Vector2.html#a3ef3bc2954f387f1db2165a884765ad0":[5,0,0,19,2],
+"classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea":[5,0,0,19,0],
+"classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2":[5,0,0,19,6],
+"classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf":[5,0,0,19,4],
+"classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822":[5,0,0,19,3],
+"classyage_1_1Vector2.html#af69d534302a406bac419589e0a2f2917":[5,0,0,19,1],
+"classyage_1_1Vector3.html":[5,0,0,20],
+"classyage_1_1Vector3.html#a163c42efd0a4f365abb612c031859820":[5,0,0,20,8],
+"classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832":[5,0,0,20,7],
+"classyage_1_1Vector3.html#a36744e7ef6c50b117e4105f1752c93c0":[5,0,0,20,2],
+"classyage_1_1Vector3.html#a745b76ba3e49f5c73f53cb065ddf337b":[5,0,0,20,0],
+"classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8":[5,0,0,20,4],
+"classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797":[5,0,0,20,6],
+"classyage_1_1Vector3.html#ad30c9989f25ef241c59a6c59661daf3a":[5,0,0,20,1],
+"classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888":[5,0,0,20,5],
+"classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0":[5,0,0,20,3],
+"classyage_1_1Vector4.html":[5,0,0,21],
+"classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c":[5,0,0,21,5],
+"classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d":[5,0,0,21,3],
+"classyage_1_1Vector4.html#a36537a95ca1764334fe9b9b1f001206d":[5,0,0,21,2],
+"classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13":[5,0,0,21,8],
+"classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583":[5,0,0,21,6],
+"classyage_1_1Vector4.html#ab6e8f6e88c13d3bbfa1a6591d97b7d03":[5,0,0,21,0],
+"classyage_1_1Vector4.html#ac1b2968c7a6a6e9f2c74507760b73cdc":[5,0,0,21,10],
+"classyage_1_1Vector4.html#acf752077d460438407ed3c84fe199f63":[5,0,0,21,7],
+"classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c":[5,0,0,21,4],
+"classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735":[5,0,0,21,9],
+"classyage_1_1Vector4.html#ae40311bf406263427426a7de5108c6c1":[5,0,0,21,1],
+"classyage_1_1Window.html":[5,0,0,11],
+"classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34":[5,0,0,11,12],
+"classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf":[5,0,0,11,1],
+"classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5":[5,0,0,11,10],
+"classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821":[5,0,0,11,2],
+"classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db":[5,0,0,11,8],
+"classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8":[5,0,0,11,11],
+"classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e":[5,0,0,11,0],
+"classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359":[5,0,0,11,13],
+"classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de":[5,0,0,11,9],
+"classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58":[5,0,0,11,4],
+"classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0":[5,0,0,11,3],
+"classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115":[5,0,0,11,6],
+"classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006":[5,0,0,11,7],
+"classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745":[5,0,0,11,5],
+"classyage_1_1details_1_1Row.html":[5,0,0,0,1],
+"classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06":[5,0,0,0,1,0],
+"classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190":[5,0,0,0,1,1],
+"classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736":[5,0,0,0,1,2],
+"collider_8h.html":[6,0,0,3,2],
+"collider_8h_source.html":[6,0,0,3,2],
+"collisionbody_8h.html":[6,0,0,3,3],
+"collisionbody_8h_source.html":[6,0,0,3,3],
+"deprecated.html":[2],
+"dir_059f34b87ae2c2af887b23a7e5e8e88f.html":[6,0,0,4],
+"dir_0a5be4b85c8e2c05f7a9f5a803f53125.html":[6,0,0],
+"dir_11841e5da2063fc5766a682aee38e289.html":[6,0,0,0],
+"dir_48a91ae829881cbedcfc124d2027890d.html":[6,0,0,5],
+"dir_a58d7658bbcfd3d3d7296185ebe55c28.html":[6,0,0,3],
+"dir_aa7f86daaaa64c448f636c0e65de2cec.html":[6,0,0,2],
+"dir_d09e80fdcf0bb585bbe3b7099c52d028.html":[6,0,0,1],
+"drawable_8h.html":[6,0,0,4,1],
+"drawable_8h_source.html":[6,0,0,4,1],
+"ellipse_8h.html":[6,0,0,4,2],
+"ellipse_8h_source.html":[6,0,0,4,2],
+"files.html":[6,0],
+"functions.html":[5,3,0],
+"functions.html":[5,3,0,0],
+"functions_b.html":[5,3,0,1],
+"functions_c.html":[5,3,0,2],
+"functions_d.html":[5,3,0,3],
+"functions_e.html":[5,3,0,4],
+"functions_f.html":[5,3,0,5],
+"functions_func.html":[5,3,1]
};
diff --git a/navtreeindex1.js b/navtreeindex1.js
index 8f8b03d9..988c478a 100644
--- a/navtreeindex1.js
+++ b/navtreeindex1.js
@@ -1,67 +1,14 @@
var NAVTREEINDEX1 =
{
-"classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0":[5,0,0,25,3],
-"classyage_1_1Vector4.html":[5,0,0,26],
-"classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c":[5,0,0,26,5],
-"classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d":[5,0,0,26,3],
-"classyage_1_1Vector4.html#a36537a95ca1764334fe9b9b1f001206d":[5,0,0,26,2],
-"classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13":[5,0,0,26,8],
-"classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583":[5,0,0,26,6],
-"classyage_1_1Vector4.html#ab6e8f6e88c13d3bbfa1a6591d97b7d03":[5,0,0,26,0],
-"classyage_1_1Vector4.html#ac1b2968c7a6a6e9f2c74507760b73cdc":[5,0,0,26,10],
-"classyage_1_1Vector4.html#acf752077d460438407ed3c84fe199f63":[5,0,0,26,7],
-"classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c":[5,0,0,26,4],
-"classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735":[5,0,0,26,9],
-"classyage_1_1Vector4.html#ae40311bf406263427426a7de5108c6c1":[5,0,0,26,1],
-"classyage_1_1Window.html":[5,0,0,21],
-"classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34":[5,0,0,21,11],
-"classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf":[5,0,0,21,1],
-"classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5":[5,0,0,21,9],
-"classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821":[5,0,0,21,2],
-"classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db":[5,0,0,21,7],
-"classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8":[5,0,0,21,10],
-"classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787":[5,0,0,21,13],
-"classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e":[5,0,0,21,0],
-"classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359":[5,0,0,21,12],
-"classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de":[5,0,0,21,8],
-"classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58":[5,0,0,21,4],
-"classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0":[5,0,0,21,3],
-"classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115":[5,0,0,21,6],
-"classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745":[5,0,0,21,5],
-"classyage_1_1details_1_1Row.html":[5,0,0,0,1],
-"classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06":[5,0,0,0,1,0],
-"classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3":[5,0,0,0,1,3],
-"classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190":[5,0,0,0,1,1],
-"classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8":[5,0,0,0,1,4],
-"classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736":[5,0,0,0,1,2],
-"collider_8h.html":[6,0,0,2,2],
-"collider_8h_source.html":[6,0,0,2,2],
-"collisionbody_8h.html":[6,0,0,2,3],
-"collisionbody_8h_source.html":[6,0,0,2,3],
-"deprecated.html":[2],
-"dir_0a5be4b85c8e2c05f7a9f5a803f53125.html":[6,0,0],
-"dir_11841e5da2063fc5766a682aee38e289.html":[6,0,0,0],
-"dir_48a91ae829881cbedcfc124d2027890d.html":[6,0,0,3],
-"dir_a58d7658bbcfd3d3d7296185ebe55c28.html":[6,0,0,2],
-"dir_aa7f86daaaa64c448f636c0e65de2cec.html":[6,0,0,1],
-"files.html":[6,0],
-"functions.html":[5,3,0],
-"functions.html":[5,3,0,0],
-"functions_b.html":[5,3,0,1],
-"functions_c.html":[5,3,0,2],
-"functions_d.html":[5,3,0,3],
-"functions_e.html":[5,3,0,4],
-"functions_f.html":[5,3,0,5],
-"functions_func.html":[5,3,1],
"functions_g.html":[5,3,0,6],
"functions_h.html":[5,3,0,7],
"functions_i.html":[5,3,0,8],
-"functions_l.html":[5,3,0,9],
-"functions_m.html":[5,3,0,10],
-"functions_n.html":[5,3,0,11],
-"functions_o.html":[5,3,0,12],
-"functions_p.html":[5,3,0,13],
-"functions_q.html":[5,3,0,14],
+"functions_k.html":[5,3,0,9],
+"functions_l.html":[5,3,0,10],
+"functions_m.html":[5,3,0,11],
+"functions_n.html":[5,3,0,12],
+"functions_o.html":[5,3,0,13],
+"functions_p.html":[5,3,0,14],
"functions_r.html":[5,3,0,15],
"functions_rela.html":[5,3,4],
"functions_s.html":[5,3,0,16],
@@ -76,178 +23,231 @@ var NAVTREEINDEX1 =
"functions_z.html":[5,3,0,23],
"functions_~.html":[5,3,0,24],
"globals.html":[6,1,0],
-"globals_defs.html":[6,1,2],
-"globals_vars.html":[6,1,1],
-"glslprogram_8cpp.html":[6,0,0,0,2],
-"glslprogram_8h.html":[6,0,0,0,3],
-"glslprogram_8h_source.html":[6,0,0,0,3],
+"globals_defs.html":[6,1,5],
+"globals_eval.html":[6,1,4],
+"globals_func.html":[6,1,1],
+"globals_type.html":[6,1,3],
+"globals_vars.html":[6,1,2],
"hierarchy.html":[5,2],
-"imageloader_8cpp.html":[6,0,0,0,4],
-"imageloader_8h.html":[6,0,0,0,5],
-"imageloader_8h_source.html":[6,0,0,0,5],
+"imageloader_8cpp.html":[6,0,0,0,2],
+"imageloader_8h.html":[6,0,0,0,3],
+"imageloader_8h_source.html":[6,0,0,0,3],
"index.html":[],
-"input_8h.html":[6,0,0,0,6],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822":[6,0,0,0,6,0],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a0123827c03dce5d07ebd43bd649a1073":[6,0,0,0,6,0,118],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383":[6,0,0,0,6,0,42],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a0d61f8370cad1d412f80b84d143e1257":[6,0,0,0,6,0,21],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a1547ad05c44be2cc614be32159bf666b":[6,0,0,0,6,0,48],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a17de1e647789892e1fb512bf04db4866":[6,0,0,0,6,0,108],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a1a9c94725005bc4759507db8acc8da33":[6,0,0,0,6,0,105],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566":[6,0,0,0,6,0,49],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a1faf42f2823f184eb2c9f0dffe5d73f2":[6,0,0,0,6,0,75],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a2091809ab6bdbc0a1975bf61d6099748":[6,0,0,0,6,0,101],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a2140df7839a3713724b35168defcc975":[6,0,0,0,6,0,107],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a21507b40c80068eda19865706fdc2403":[6,0,0,0,6,0,57],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5":[6,0,0,0,6,0,44],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a22517dfceb401f35b1b59999ba74c700":[6,0,0,0,6,0,7],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a2468649b6215c4cdd2aef5095b3f5932":[6,0,0,0,6,0,83],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891":[6,0,0,0,6,0,69],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a2cfe3b4f9911c5899d79f171d6b9cc4a":[6,0,0,0,6,0,111],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a2d0bfa737eccfce7842cd2230eed6712":[6,0,0,0,6,0,97],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4":[6,0,0,0,6,0,109],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed":[6,0,0,0,6,0,66],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e":[6,0,0,0,6,0,56],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13":[6,0,0,0,6,0,52],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a37f438df6a6d5ba4c17ef8ca58562f00":[6,0,0,0,6,0,74],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a3a3ea00cfc35332cedf6e5e9a32e94da":[6,0,0,0,6,0,23],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56":[6,0,0,0,6,0,114],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a3d548437292c0cd1662fc30d420f2c27":[6,0,0,0,6,0,104],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a3ed53fbeb1eab0443561b68ca0c0b5cf":[6,0,0,0,6,0,120],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a44c29edb103a2872f519ad0c9a0fdaaa":[6,0,0,0,6,0,34],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839":[6,0,0,0,6,0,76],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7":[6,0,0,0,6,0,77],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a4b6bf4b531770872d4328ce69bef5627":[6,0,0,0,6,0,72],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb":[6,0,0,0,6,0,39],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a4d9b3e9fc12849d060371eb65154c751":[6,0,0,0,6,0,3],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a5206560a306a2e085a437fd258eb57ce":[6,0,0,0,6,0,40],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a56d8353718e6fdc78b8d69078a2cdb94":[6,0,0,0,6,0,85],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0":[6,0,0,0,6,0,43],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e":[6,0,0,0,6,0,37],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276":[6,0,0,0,6,0,41],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b":[6,0,0,0,6,0,55],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a62e75b78c155e8549c5c5edb434a7757":[6,0,0,0,6,0,103],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098":[6,0,0,0,6,0,116],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a643b0662422d1d0dffa3fca2e2bf28a8":[6,0,0,0,6,0,80],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e":[6,0,0,0,6,0,6],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57":[6,0,0,0,6,0,1],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a65d3215a061ffc8962994cdf549e31e4":[6,0,0,0,6,0,14],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a684d325a7303f52e64011467ff5c5758":[6,0,0,0,6,0,58],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a69691c7bdcc3ce6d5d8a1361f22d04ac":[6,0,0,0,6,0,31],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3":[6,0,0,0,6,0,0],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a6e2e9ebea6f89bc9235928b0794bc261":[6,0,0,0,6,0,12],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a6f5d8e41084b4d3d47fa621c459eede1":[6,0,0,0,6,0,54],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a710533dd879dd1202e5c73b27705bf02":[6,0,0,0,6,0,63],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a71ddb986230a88155bf74e65f644dda4":[6,0,0,0,6,0,8],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a71f42e8faf0fb7cb14174c8481461c00":[6,0,0,0,6,0,102],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a766b4a88cba7645629bac70fd01d8275":[6,0,0,0,6,0,98],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a77e9eee7c579eef5f3731ecf1053c02e":[6,0,0,0,6,0,90],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a78232351eaf00755d136afad0745157b":[6,0,0,0,6,0,9],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a7c333963ed187368820c5343b355e5bc":[6,0,0,0,6,0,106],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a7fa06ead699fcbd63132370ffe13335a":[6,0,0,0,6,0,91],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a7fc56270e7a70fa81a5935b72eacbe29":[6,0,0,0,6,0,19],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a800618943025315f869e4e1f09471012":[6,0,0,0,6,0,24],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a80cdb34a10d276950f8b20b6814c9194":[6,0,0,0,6,0,117],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a810b30cdfc07fd7fff553a94b828ff78":[6,0,0,0,6,0,87],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a853f8ded7a96b5a765704974e6a3ca96":[6,0,0,0,6,0,68],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a8825bb5d58b44b72465799553acb964d":[6,0,0,0,6,0,119],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a889645d530078147e7dc69a9caadc31e":[6,0,0,0,6,0,92],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9":[6,0,0,0,6,0,78],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a8d9c307cb7f3c4a32822a51922d1ceaa":[6,0,0,0,6,0,32],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a91a9360a45bb242906ee86ecbf9ac7c4":[6,0,0,0,6,0,45],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a91d8d0b84f26c3e30fb064ea4fc1090f":[6,0,0,0,6,0,47],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a95dfde4807d4d6a9eec499203b3c24a0":[6,0,0,0,6,0,82],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44":[6,0,0,0,6,0,18],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a9c56f942b051ba23447e108e16a8b23b":[6,0,0,0,6,0,99],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a9d5ed678fe57bcca610140957afab571":[6,0,0,0,6,0,20],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822a9df35983f4024e31955de0f1e545e888":[6,0,0,0,6,0,2],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aa5f3c6a11b03839d46af9fb43c97c188":[6,0,0,0,6,0,29],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aa8ecc4d78b0864cd22b788de2b48921f":[6,0,0,0,6,0,13],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aabf9846f265ae3dea4bf9d740f5cb1aa":[6,0,0,0,6,0,94],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905":[6,0,0,0,6,0,64],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ab213ce22ca6ad4eda8db82966b9b6e5a":[6,0,0,0,6,0,79],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ab6c7e6204e97690efd79d6f513ed5613":[6,0,0,0,6,0,112],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3":[6,0,0,0,6,0,38],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5":[6,0,0,0,6,0,17],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822abb2cbd684a16faa1624ae1b3a4ceaa2c":[6,0,0,0,6,0,16],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822abb4e75dde7d107cc573c77dc42a7acab":[6,0,0,0,6,0,11],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ac1d9f50f86825a1a2302ec2449c17196":[6,0,0,0,6,0,26],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f":[6,0,0,0,6,0,59],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ac63bd90003103ca242fe9202fe10c3e9":[6,0,0,0,6,0,15],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822acb0d0bf9279e78f982deba761110e434":[6,0,0,0,6,0,67],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22":[6,0,0,0,6,0,50],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822acd7c2a221ef5d0a34acc0bcd679b2054":[6,0,0,0,6,0,88],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822acf6d2dfd5fb43f33ec09dbad7a90593c":[6,0,0,0,6,0,10],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587":[6,0,0,0,6,0,30],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d":[6,0,0,0,6,0,51],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822adc271d081ca9fcbefdc42998313398d8":[6,0,0,0,6,0,100],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f":[6,0,0,0,6,0,27],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822addf133566f544b297f2f84874c283589":[6,0,0,0,6,0,113],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ade58a28573783fe95304a260ccd90362":[6,0,0,0,6,0,5],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822adea24610606fb34c587a8fe8ed8f8389":[6,0,0,0,6,0,110],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822adfcf28d0734569a6a693bc8194de62bf":[6,0,0,0,6,0,25],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae1dffc8709f31a4987c8a88334107e89":[6,0,0,0,6,0,70],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6":[6,0,0,0,6,0,36],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae40af1d5cc55c55ae0bb25953f7a7ee2":[6,0,0,0,6,0,65],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae53b55851b9ff4979f2c3ff434a4a138":[6,0,0,0,6,0,84],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae791d936f894ce58dd18bf603edcb9b4":[6,0,0,0,6,0,61],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae7e0e72401a9f2718ed0f39f2861d702":[6,0,0,0,6,0,73],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae902674982fc99aa343cdd94da7476c3":[6,0,0,0,6,0,81],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822ae9a23c5ce3d34b40123d65ca14b2e88f":[6,0,0,0,6,0,62],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aebd7820c520d05eca2d775c37d141273":[6,0,0,0,6,0,93],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aecb4a6f3440c2ed0dff59f17375a27c0":[6,0,0,0,6,0,46],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee":[6,0,0,0,6,0,35],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822af186217753c37b9b9f958d906208506e":[6,0,0,0,6,0,33],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822af447f5c03508de4d88e340390ba7c78f":[6,0,0,0,6,0,121],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5":[6,0,0,0,6,0,22],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822af684bf05fa3e81528c84d1d281d839f1":[6,0,0,0,6,0,53],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822afbaedde498cdead4f2780217646e9ba1":[6,0,0,0,6,0,60],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822afc335adb3d69d3d8270769e1923ea4dc":[6,0,0,0,6,0,89],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde":[6,0,0,0,6,0,115],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822afdcbdc22f7e22388bf5905c290bcfe4b":[6,0,0,0,6,0,96],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822afe5c3684dce76cdd9f7f42430868aa74":[6,0,0,0,6,0,71],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822aff44570aca8241914870afbc310cdb85":[6,0,0,0,6,0,28],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822affa5882d1ddcf903bf0d0dbc30bfc604":[6,0,0,0,6,0,86],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52":[6,0,0,0,6,0,95],
-"input_8h.html#ad5a9307442e5daa8810aff942564a822affc0d9b54a1fe677c4c9e6b050e67c81":[6,0,0,0,6,0,4],
-"input_8h_source.html":[6,0,0,0,6],
-"iomanager_8cpp.html":[6,0,0,0,7],
-"iomanager_8h.html":[6,0,0,0,8],
-"iomanager_8h_source.html":[6,0,0,0,8],
-"logger_8cpp.html":[6,0,0,0,9],
-"logger_8h.html":[6,0,0,0,10],
-"logger_8h.html#aade1a167159e476dee85a6a097cb7ccc":[6,0,0,0,10,1],
-"logger_8h_source.html":[6,0,0,0,10],
-"loglevel_8h.html":[6,0,0,0,11],
-"loglevel_8h_source.html":[6,0,0,0,11],
-"logmessage_8cpp.html":[6,0,0,0,12],
-"logmessage_8h.html":[6,0,0,0,13],
-"logmessage_8h_source.html":[6,0,0,0,13],
-"logsink_8cpp.html":[6,0,0,0,14],
-"logsink_8cpp.html#a6b288197f6a97f197dda60e5b54f1841":[6,0,0,0,14,2],
-"logsink_8cpp.html#ab54350a8dbf59338c99ab4f43cfa2858":[6,0,0,0,14,0],
-"logsink_8cpp.html#ad537beeea51c8314e407fadd24affc34":[6,0,0,0,14,1],
-"logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1":[6,0,0,0,14,3],
-"logsink_8h.html":[6,0,0,0,15],
-"logsink_8h.html#a6b288197f6a97f197dda60e5b54f1841":[6,0,0,0,15,5],
-"logsink_8h.html#ab54350a8dbf59338c99ab4f43cfa2858":[6,0,0,0,15,3],
-"logsink_8h.html#ad537beeea51c8314e407fadd24affc34":[6,0,0,0,15,4],
-"logsink_8h_source.html":[6,0,0,0,15],
-"matrix_8h.html":[6,0,0,1,0],
-"matrix_8h.html#a090cbd6b767b583364e9cbe78d8a8d5a":[6,0,0,1,0,19],
-"matrix_8h.html#a12811c7f985dbbdc34e4d93a26d21763":[6,0,0,1,0,10],
-"matrix_8h.html#a1896ae5c4cfed1453dadf21a4a2a48cf":[6,0,0,1,0,14],
-"matrix_8h.html#a2187fb11298a029f2877702192717090":[6,0,0,1,0,23],
-"matrix_8h.html#a226cc29763f745fd175844f4263d5dae":[6,0,0,1,0,20],
-"matrix_8h.html#a23eef341099a6b2816cf0c63f8ffe898":[6,0,0,1,0,7],
-"matrix_8h.html#a277125ad9fa06a7119c59d350e129985":[6,0,0,1,0,17],
-"matrix_8h.html#a438e5eeb3daf58452259f7534e8818e8":[6,0,0,1,0,13],
-"matrix_8h.html#a57e09b8310398c434e9526ea5cc456ad":[6,0,0,1,0,9],
-"matrix_8h.html#a5ddd829cb1c7c4c880d0fd53326858fe":[6,0,0,1,0,28],
-"matrix_8h.html#a62de4b4b6bab23717d957c370f2e41c7":[6,0,0,1,0,29],
-"matrix_8h.html#a6455fea9bfa32e435fbf77e02ce12759":[6,0,0,1,0,15],
-"matrix_8h.html#a6b77afaa1cd077df90b9daccbfc2cbae":[6,0,0,1,0,21],
-"matrix_8h.html#a747a31edd11312cbae25ebb9ab12d5cb":[6,0,0,1,0,12],
-"matrix_8h.html#a7ed614bc9d3e8b9f3f8d32b6a7ff28eb":[6,0,0,1,0,27],
-"matrix_8h.html#a8a9db24697f649f6d19f0347330d95fe":[6,0,0,1,0,24]
+"input_8h.html":[6,0,0,1,0],
+"input_8h.html#a088324ad8995e3eb76024e3e79083d48":[6,0,0,1,0,0],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822":[6,0,0,1,0,1],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a0123827c03dce5d07ebd43bd649a1073":[6,0,0,1,0,1,118],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383":[6,0,0,1,0,1,42],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a0d61f8370cad1d412f80b84d143e1257":[6,0,0,1,0,1,21],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a1547ad05c44be2cc614be32159bf666b":[6,0,0,1,0,1,48],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a17de1e647789892e1fb512bf04db4866":[6,0,0,1,0,1,108],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a1a9c94725005bc4759507db8acc8da33":[6,0,0,1,0,1,105],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566":[6,0,0,1,0,1,49],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a1faf42f2823f184eb2c9f0dffe5d73f2":[6,0,0,1,0,1,75],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a2091809ab6bdbc0a1975bf61d6099748":[6,0,0,1,0,1,101],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a2140df7839a3713724b35168defcc975":[6,0,0,1,0,1,107],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a21507b40c80068eda19865706fdc2403":[6,0,0,1,0,1,57],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5":[6,0,0,1,0,1,44],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a22517dfceb401f35b1b59999ba74c700":[6,0,0,1,0,1,7],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a2468649b6215c4cdd2aef5095b3f5932":[6,0,0,1,0,1,83],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891":[6,0,0,1,0,1,69],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a2cfe3b4f9911c5899d79f171d6b9cc4a":[6,0,0,1,0,1,111],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a2d0bfa737eccfce7842cd2230eed6712":[6,0,0,1,0,1,97],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a30808a0391df7790292aa5c13f6195e4":[6,0,0,1,0,1,109],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed":[6,0,0,1,0,1,66],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e":[6,0,0,1,0,1,56],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13":[6,0,0,1,0,1,52],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a37f438df6a6d5ba4c17ef8ca58562f00":[6,0,0,1,0,1,74],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a3a3ea00cfc35332cedf6e5e9a32e94da":[6,0,0,1,0,1,23],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a3a92f3bbf26e4ea5ea7ce7db2f432c56":[6,0,0,1,0,1,114],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a3d548437292c0cd1662fc30d420f2c27":[6,0,0,1,0,1,104],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a3ed53fbeb1eab0443561b68ca0c0b5cf":[6,0,0,1,0,1,120],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a44c29edb103a2872f519ad0c9a0fdaaa":[6,0,0,1,0,1,34],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839":[6,0,0,1,0,1,76],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7":[6,0,0,1,0,1,77],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a4b6bf4b531770872d4328ce69bef5627":[6,0,0,1,0,1,72],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb":[6,0,0,1,0,1,39],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a4d9b3e9fc12849d060371eb65154c751":[6,0,0,1,0,1,3],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a5206560a306a2e085a437fd258eb57ce":[6,0,0,1,0,1,40],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a56d8353718e6fdc78b8d69078a2cdb94":[6,0,0,1,0,1,85],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0":[6,0,0,1,0,1,43],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e":[6,0,0,1,0,1,37],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276":[6,0,0,1,0,1,41],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b":[6,0,0,1,0,1,55],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a62e75b78c155e8549c5c5edb434a7757":[6,0,0,1,0,1,103],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a63a707029860972efa1c44ac6016e098":[6,0,0,1,0,1,116],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a643b0662422d1d0dffa3fca2e2bf28a8":[6,0,0,1,0,1,80],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e":[6,0,0,1,0,1,6],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57":[6,0,0,1,0,1,1],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a65d3215a061ffc8962994cdf549e31e4":[6,0,0,1,0,1,14],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a684d325a7303f52e64011467ff5c5758":[6,0,0,1,0,1,58],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a69691c7bdcc3ce6d5d8a1361f22d04ac":[6,0,0,1,0,1,31],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3":[6,0,0,1,0,1,0],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a6e2e9ebea6f89bc9235928b0794bc261":[6,0,0,1,0,1,12],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a6f5d8e41084b4d3d47fa621c459eede1":[6,0,0,1,0,1,54],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a710533dd879dd1202e5c73b27705bf02":[6,0,0,1,0,1,63],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a71ddb986230a88155bf74e65f644dda4":[6,0,0,1,0,1,8],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a71f42e8faf0fb7cb14174c8481461c00":[6,0,0,1,0,1,102],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a766b4a88cba7645629bac70fd01d8275":[6,0,0,1,0,1,98],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a77e9eee7c579eef5f3731ecf1053c02e":[6,0,0,1,0,1,90],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a78232351eaf00755d136afad0745157b":[6,0,0,1,0,1,9],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a7c333963ed187368820c5343b355e5bc":[6,0,0,1,0,1,106],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a7fa06ead699fcbd63132370ffe13335a":[6,0,0,1,0,1,91],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a7fc56270e7a70fa81a5935b72eacbe29":[6,0,0,1,0,1,19],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a800618943025315f869e4e1f09471012":[6,0,0,1,0,1,24],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a80cdb34a10d276950f8b20b6814c9194":[6,0,0,1,0,1,117],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a810b30cdfc07fd7fff553a94b828ff78":[6,0,0,1,0,1,87],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a853f8ded7a96b5a765704974e6a3ca96":[6,0,0,1,0,1,68],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a8825bb5d58b44b72465799553acb964d":[6,0,0,1,0,1,119],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a889645d530078147e7dc69a9caadc31e":[6,0,0,1,0,1,92],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9":[6,0,0,1,0,1,78],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a8d9c307cb7f3c4a32822a51922d1ceaa":[6,0,0,1,0,1,32],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a91a9360a45bb242906ee86ecbf9ac7c4":[6,0,0,1,0,1,45],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a91d8d0b84f26c3e30fb064ea4fc1090f":[6,0,0,1,0,1,47],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a95dfde4807d4d6a9eec499203b3c24a0":[6,0,0,1,0,1,82],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44":[6,0,0,1,0,1,18],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a9c56f942b051ba23447e108e16a8b23b":[6,0,0,1,0,1,99],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a9d5ed678fe57bcca610140957afab571":[6,0,0,1,0,1,20],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822a9df35983f4024e31955de0f1e545e888":[6,0,0,1,0,1,2],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aa5f3c6a11b03839d46af9fb43c97c188":[6,0,0,1,0,1,29],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aa8ecc4d78b0864cd22b788de2b48921f":[6,0,0,1,0,1,13],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aabf9846f265ae3dea4bf9d740f5cb1aa":[6,0,0,1,0,1,94],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905":[6,0,0,1,0,1,64],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ab213ce22ca6ad4eda8db82966b9b6e5a":[6,0,0,1,0,1,79],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ab6c7e6204e97690efd79d6f513ed5613":[6,0,0,1,0,1,112],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3":[6,0,0,1,0,1,38],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5":[6,0,0,1,0,1,17],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822abb2cbd684a16faa1624ae1b3a4ceaa2c":[6,0,0,1,0,1,16],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822abb4e75dde7d107cc573c77dc42a7acab":[6,0,0,1,0,1,11],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ac1d9f50f86825a1a2302ec2449c17196":[6,0,0,1,0,1,26],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f":[6,0,0,1,0,1,59],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ac63bd90003103ca242fe9202fe10c3e9":[6,0,0,1,0,1,15],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822acb0d0bf9279e78f982deba761110e434":[6,0,0,1,0,1,67],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22":[6,0,0,1,0,1,50],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822acd7c2a221ef5d0a34acc0bcd679b2054":[6,0,0,1,0,1,88],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822acf6d2dfd5fb43f33ec09dbad7a90593c":[6,0,0,1,0,1,10],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587":[6,0,0,1,0,1,30],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d":[6,0,0,1,0,1,51],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822adc271d081ca9fcbefdc42998313398d8":[6,0,0,1,0,1,100],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f":[6,0,0,1,0,1,27],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822addf133566f544b297f2f84874c283589":[6,0,0,1,0,1,113],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ade58a28573783fe95304a260ccd90362":[6,0,0,1,0,1,5],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822adea24610606fb34c587a8fe8ed8f8389":[6,0,0,1,0,1,110],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822adfcf28d0734569a6a693bc8194de62bf":[6,0,0,1,0,1,25],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae1dffc8709f31a4987c8a88334107e89":[6,0,0,1,0,1,70],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6":[6,0,0,1,0,1,36],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae40af1d5cc55c55ae0bb25953f7a7ee2":[6,0,0,1,0,1,65],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae53b55851b9ff4979f2c3ff434a4a138":[6,0,0,1,0,1,84],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae791d936f894ce58dd18bf603edcb9b4":[6,0,0,1,0,1,61],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae7e0e72401a9f2718ed0f39f2861d702":[6,0,0,1,0,1,73],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae902674982fc99aa343cdd94da7476c3":[6,0,0,1,0,1,81],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822ae9a23c5ce3d34b40123d65ca14b2e88f":[6,0,0,1,0,1,62],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aebd7820c520d05eca2d775c37d141273":[6,0,0,1,0,1,93],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aecb4a6f3440c2ed0dff59f17375a27c0":[6,0,0,1,0,1,46],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee":[6,0,0,1,0,1,35],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822af186217753c37b9b9f958d906208506e":[6,0,0,1,0,1,33],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822af447f5c03508de4d88e340390ba7c78f":[6,0,0,1,0,1,121],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5":[6,0,0,1,0,1,22],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822af684bf05fa3e81528c84d1d281d839f1":[6,0,0,1,0,1,53],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822afbaedde498cdead4f2780217646e9ba1":[6,0,0,1,0,1,60],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822afc335adb3d69d3d8270769e1923ea4dc":[6,0,0,1,0,1,89],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde":[6,0,0,1,0,1,115],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822afdcbdc22f7e22388bf5905c290bcfe4b":[6,0,0,1,0,1,96],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822afe5c3684dce76cdd9f7f42430868aa74":[6,0,0,1,0,1,71],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822aff44570aca8241914870afbc310cdb85":[6,0,0,1,0,1,28],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822affa5882d1ddcf903bf0d0dbc30bfc604":[6,0,0,1,0,1,86],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52":[6,0,0,1,0,1,95],
+"input_8h.html#ad5a9307442e5daa8810aff942564a822affc0d9b54a1fe677c4c9e6b050e67c81":[6,0,0,1,0,1,4],
+"input_8h_source.html":[6,0,0,1,0],
+"iomanager_8cpp.html":[6,0,0,0,4],
+"iomanager_8h.html":[6,0,0,0,5],
+"iomanager_8h_source.html":[6,0,0,0,5],
+"logger_8cpp.html":[6,0,0,0,6],
+"logger_8h.html":[6,0,0,0,7],
+"logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f":[6,0,0,0,7,1],
+"logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d":[6,0,0,0,7,5],
+"logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e":[6,0,0,0,7,3],
+"logger_8h.html#a9055939896a9ae18d3a833c5023e98d1":[6,0,0,0,7,4],
+"logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a":[6,0,0,0,7,6],
+"logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d":[6,0,0,0,7,2],
+"logger_8h_source.html":[6,0,0,0,7],
+"loglevel_8h.html":[6,0,0,0,8],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788":[6,0,0,0,8,0],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b":[6,0,0,0,8,0,2],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc":[6,0,0,0,8,0,4],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3":[6,0,0,0,8,0,1],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5":[6,0,0,0,8,0,3],
+"loglevel_8h.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15":[6,0,0,0,8,0,0],
+"loglevel_8h_source.html":[6,0,0,0,8],
+"logmessage_8cpp.html":[6,0,0,0,9],
+"logmessage_8h.html":[6,0,0,0,10],
+"logmessage_8h_source.html":[6,0,0,0,10],
+"logsink_8cpp.html":[6,0,0,0,11],
+"logsink_8cpp.html#a6b288197f6a97f197dda60e5b54f1841":[6,0,0,0,11,2],
+"logsink_8cpp.html#ab54350a8dbf59338c99ab4f43cfa2858":[6,0,0,0,11,0],
+"logsink_8cpp.html#ad537beeea51c8314e407fadd24affc34":[6,0,0,0,11,1],
+"logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1":[6,0,0,0,11,3],
+"logsink_8h.html":[6,0,0,0,12],
+"logsink_8h.html#a6b288197f6a97f197dda60e5b54f1841":[6,0,0,0,12,3],
+"logsink_8h.html#ab54350a8dbf59338c99ab4f43cfa2858":[6,0,0,0,12,1],
+"logsink_8h.html#ad537beeea51c8314e407fadd24affc34":[6,0,0,0,12,2],
+"logsink_8h_source.html":[6,0,0,0,12],
+"matrix_8h.html":[6,0,0,2,0],
+"matrix_8h.html#a090cbd6b767b583364e9cbe78d8a8d5a":[6,0,0,2,0,19],
+"matrix_8h.html#a12811c7f985dbbdc34e4d93a26d21763":[6,0,0,2,0,10],
+"matrix_8h.html#a1896ae5c4cfed1453dadf21a4a2a48cf":[6,0,0,2,0,14],
+"matrix_8h.html#a2187fb11298a029f2877702192717090":[6,0,0,2,0,23],
+"matrix_8h.html#a226cc29763f745fd175844f4263d5dae":[6,0,0,2,0,20],
+"matrix_8h.html#a23eef341099a6b2816cf0c63f8ffe898":[6,0,0,2,0,7],
+"matrix_8h.html#a277125ad9fa06a7119c59d350e129985":[6,0,0,2,0,17],
+"matrix_8h.html#a438e5eeb3daf58452259f7534e8818e8":[6,0,0,2,0,13],
+"matrix_8h.html#a57e09b8310398c434e9526ea5cc456ad":[6,0,0,2,0,9],
+"matrix_8h.html#a5ddd829cb1c7c4c880d0fd53326858fe":[6,0,0,2,0,28],
+"matrix_8h.html#a62de4b4b6bab23717d957c370f2e41c7":[6,0,0,2,0,29],
+"matrix_8h.html#a6455fea9bfa32e435fbf77e02ce12759":[6,0,0,2,0,15],
+"matrix_8h.html#a6b77afaa1cd077df90b9daccbfc2cbae":[6,0,0,2,0,21],
+"matrix_8h.html#a747a31edd11312cbae25ebb9ab12d5cb":[6,0,0,2,0,12],
+"matrix_8h.html#a7ed614bc9d3e8b9f3f8d32b6a7ff28eb":[6,0,0,2,0,27],
+"matrix_8h.html#a8a9db24697f649f6d19f0347330d95fe":[6,0,0,2,0,24],
+"matrix_8h.html#a947133b8fc764d9fc5c5d8b08821cf32":[6,0,0,2,0,22],
+"matrix_8h.html#ac4d2f55a5c3369ec42001776a582c30a":[6,0,0,2,0,16],
+"matrix_8h.html#acca4a23afb94173695bbc1e1f2cde2b3":[6,0,0,2,0,26],
+"matrix_8h.html#ad8903f6a93ac89f16846458540717507":[6,0,0,2,0,18],
+"matrix_8h.html#ad9344d41af72f29cd6f8cf1ef62ed3cc":[6,0,0,2,0,25],
+"matrix_8h.html#ae04792ab12e05bcb11c0316b142ebeec":[6,0,0,2,0,11],
+"matrix_8h.html#aea25e39fde2b6a8abab71cc27371d339":[6,0,0,2,0,8],
+"matrix_8h_source.html":[6,0,0,2,0],
+"md_yage_physics_README.html":[0],
+"namespacemembers.html":[4,1,0],
+"namespacemembers_enum.html":[4,1,3],
+"namespacemembers_eval.html":[4,1,4],
+"namespacemembers_func.html":[4,1,1],
+"namespacemembers_type.html":[4,1,2],
+"namespaces.html":[4,0],
+"namespaceyage.html":[4,0,0],
+"namespaceyage.html":[5,0,0],
+"namespaceyage_1_1details.html":[4,0,0,0],
+"namespaceyage_1_1details.html":[5,0,0,0],
+"namespaceyage_1_1matrix.html":[5,0,0,1],
+"namespaceyage_1_1matrix.html":[4,0,0,1],
+"pages.html":[],
+"particlebody_8cpp.html":[6,0,0,3,4],
+"particlebody_8h.html":[6,0,0,3,5],
+"particlebody_8h_source.html":[6,0,0,3,5],
+"physics_8h.html":[6,0,0,3,6],
+"physics_8h_source.html":[6,0,0,3,6],
+"rectangle_8cpp.html":[6,0,0,4,3],
+"rectangle_8h.html":[6,0,0,4,4],
+"rectangle_8h_source.html":[6,0,0,4,4],
+"rectanglecollider_8cpp.html":[6,0,0,3,7],
+"rectanglecollider_8h.html":[6,0,0,3,8],
+"rectanglecollider_8h_source.html":[6,0,0,3,8],
+"resourcemanager_8cpp.html":[6,0,0,0,13],
+"resourcemanager_8h.html":[6,0,0,0,14],
+"resourcemanager_8h_source.html":[6,0,0,0,14],
+"rigidbody_8cpp.html":[6,0,0,3,9],
+"rigidbody_8h.html":[6,0,0,3,10],
+"rigidbody_8h_source.html":[6,0,0,3,10],
+"shader_8cpp.html":[6,0,0,4,5],
+"shader_8h.html":[6,0,0,4,6]
};
diff --git a/navtreeindex2.js b/navtreeindex2.js
index 37091eda..4e738592 100644
--- a/navtreeindex2.js
+++ b/navtreeindex2.js
@@ -1,100 +1,108 @@
var NAVTREEINDEX2 =
{
-"matrix_8h.html#a947133b8fc764d9fc5c5d8b08821cf32":[6,0,0,1,0,22],
-"matrix_8h.html#ac4d2f55a5c3369ec42001776a582c30a":[6,0,0,1,0,16],
-"matrix_8h.html#acca4a23afb94173695bbc1e1f2cde2b3":[6,0,0,1,0,26],
-"matrix_8h.html#ad8903f6a93ac89f16846458540717507":[6,0,0,1,0,18],
-"matrix_8h.html#ad9344d41af72f29cd6f8cf1ef62ed3cc":[6,0,0,1,0,25],
-"matrix_8h.html#ae04792ab12e05bcb11c0316b142ebeec":[6,0,0,1,0,11],
-"matrix_8h.html#aea25e39fde2b6a8abab71cc27371d339":[6,0,0,1,0,8],
-"matrix_8h_source.html":[6,0,0,1,0],
-"md_yage_physics_README.html":[0],
-"namespacemembers.html":[4,1,0],
-"namespacemembers_enum.html":[4,1,3],
-"namespacemembers_eval.html":[4,1,4],
-"namespacemembers_func.html":[4,1,1],
-"namespacemembers_type.html":[4,1,2],
-"namespaces.html":[4,0],
-"namespaceyage.html":[5,0,0],
-"namespaceyage.html":[4,0,0],
-"namespaceyage_1_1details.html":[4,0,0,0],
-"namespaceyage_1_1details.html":[5,0,0,0],
-"namespaceyage_1_1matrix.html":[4,0,0,1],
-"namespaceyage_1_1matrix.html":[5,0,0,1],
-"pages.html":[],
-"particlebody_8cpp.html":[6,0,0,2,4],
-"particlebody_8h.html":[6,0,0,2,5],
-"particlebody_8h_source.html":[6,0,0,2,5],
-"physics_8h.html":[6,0,0,2,6],
-"physics_8h_source.html":[6,0,0,2,6],
-"picopng_8cpp.html":[6,0,0,0,16],
-"picopng_8cpp.html#a0cf122e98752ed702393cbe30df51356":[6,0,0,0,16,0],
-"picopng_8h.html":[6,0,0,0,17],
-"picopng_8h.html#a0cf122e98752ed702393cbe30df51356":[6,0,0,0,17,0],
-"picopng_8h_source.html":[6,0,0,0,17],
-"rectanglecollider_8cpp.html":[6,0,0,2,7],
-"rectanglecollider_8h.html":[6,0,0,2,8],
-"rectanglecollider_8h_source.html":[6,0,0,2,8],
-"resourcemanager_8cpp.html":[6,0,0,0,18],
-"resourcemanager_8h.html":[6,0,0,0,19],
-"resourcemanager_8h_source.html":[6,0,0,0,19],
-"rigidbody_8cpp.html":[6,0,0,2,9],
-"rigidbody_8h.html":[6,0,0,2,10],
-"rigidbody_8h_source.html":[6,0,0,2,10],
-"sprite_8cpp.html":[6,0,0,0,20],
-"sprite_8h.html":[6,0,0,0,21],
-"sprite_8h_source.html":[6,0,0,0,21],
-"spritebatch_8cpp.html":[6,0,0,0,22],
-"spritebatch_8h.html":[6,0,0,0,23],
-"spritebatch_8h_source.html":[6,0,0,0,23],
-"spritesheet_8cpp.html":[6,0,0,0,24],
-"spritesheet_8h.html":[6,0,0,0,25],
-"spritesheet_8h.html#a035f63ad1a3114ada8157ed4182521c9":[6,0,0,0,25,2],
-"spritesheet_8h_source.html":[6,0,0,0,25],
-"structyage_1_1Colour.html":[5,0,0,18],
-"structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd":[5,0,0,18,4],
-"structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99":[5,0,0,18,5],
-"structyage_1_1Colour.html#a585165d5109c81b6b2de6f1116406abd":[5,0,0,18,0],
-"structyage_1_1Colour.html#a5aef37a5ac37e44dc32f5f9b1ebee10c":[5,0,0,18,2],
-"structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f":[5,0,0,18,3],
-"structyage_1_1Colour.html#a8118ad802db7e61df770f7d3b5b88aaa":[5,0,0,18,1],
-"structyage_1_1LogMessage_1_1Meta.html":[5,0,0,7,0],
-"structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362":[5,0,0,7,0,1],
-"structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4":[5,0,0,7,0,0],
-"structyage_1_1LogSink_1_1Concept.html":[5,0,0,8,0],
-"structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d":[5,0,0,8,0,1],
-"structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac":[5,0,0,8,0,2],
-"structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1":[5,0,0,8,0,0],
-"structyage_1_1LogSink_1_1Model.html":[5,0,0,8,1],
-"structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9":[5,0,0,8,1,0],
-"structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf":[5,0,0,8,1,1],
-"structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d":[5,0,0,8,1,3],
-"structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224":[5,0,0,8,1,2],
-"structyage_1_1Position.html":[5,0,0,17],
-"structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2":[5,0,0,17,0],
-"structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27":[5,0,0,17,3],
-"structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91":[5,0,0,17,2],
-"structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2":[5,0,0,17,1],
-"structyage_1_1Texture.html":[5,0,0,15],
-"structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5":[5,0,0,15,0],
-"structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968":[5,0,0,15,3],
-"structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e":[5,0,0,15,2],
-"structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c":[5,0,0,15,1],
-"structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598":[5,0,0,15,4],
-"structyage_1_1UV.html":[5,0,0,19],
-"structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793":[5,0,0,19,3],
-"structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053":[5,0,0,19,2],
-"structyage_1_1UV.html#ac918524789292937aae5803df3c2673f":[5,0,0,19,1],
-"structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde":[5,0,0,19,0],
-"structyage_1_1Vertex.html":[5,0,0,20],
-"structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182":[5,0,0,20,5],
-"structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e":[5,0,0,20,7],
-"structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50":[5,0,0,20,4],
-"structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf":[5,0,0,20,2],
-"structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e":[5,0,0,20,1],
-"structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a":[5,0,0,20,6],
-"structyage_1_1Vertex.html#acae9697c2762e37dfa4472b85fa112c3":[5,0,0,20,0],
-"structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d":[5,0,0,20,3],
+"shader_8h_source.html":[6,0,0,4,6],
+"shape_8h.html":[6,0,0,4,7],
+"shape_8h_source.html":[6,0,0,4,7],
+"sprite_8cpp.html":[6,0,0,4,8],
+"sprite_8h.html":[6,0,0,4,9],
+"sprite_8h_source.html":[6,0,0,4,9],
+"spritebatch_8cpp.html":[6,0,0,4,10],
+"spritebatch_8h.html":[6,0,0,4,11],
+"spritebatch_8h_source.html":[6,0,0,4,11],
+"spritesheet_8cpp.html":[6,0,0,0,15],
+"spritesheet_8h.html":[6,0,0,0,16],
+"spritesheet_8h.html#a035f63ad1a3114ada8157ed4182521c9":[6,0,0,0,16,2],
+"spritesheet_8h_source.html":[6,0,0,0,16],
+"stb__image_8cpp.html":[6,0,0,0,17],
+"stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78":[6,0,0,0,17,0],
+"stb__image_8h.html":[6,0,0,0,18],
+"stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27":[6,0,0,0,18,42],
+"stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029":[6,0,0,0,18,5],
+"stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf":[6,0,0,0,18,8],
+"stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293":[6,0,0,0,18,9],
+"stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa":[6,0,0,0,18,6],
+"stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8":[6,0,0,0,18,7],
+"stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e":[6,0,0,0,18,43],
+"stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb":[6,0,0,0,18,23],
+"stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b":[6,0,0,0,18,10],
+"stb__image_8h.html#a28abedef4a0a93909332080df6be0021":[6,0,0,0,18,17],
+"stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d":[6,0,0,0,18,3],
+"stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2":[6,0,0,0,18,2],
+"stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9":[6,0,0,0,18,38],
+"stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e":[6,0,0,0,18,40],
+"stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e":[6,0,0,0,18,22],
+"stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2":[6,0,0,0,18,36],
+"stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2":[6,0,0,0,18,4],
+"stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb":[6,0,0,0,18,34],
+"stb__image_8h.html#a7fbd65c83495f13f22469fe493775739":[6,0,0,0,18,44],
+"stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18":[6,0,0,0,18,27],
+"stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363":[6,0,0,0,18,16],
+"stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee":[6,0,0,0,18,26],
+"stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7":[6,0,0,0,18,29],
+"stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c":[6,0,0,0,18,31],
+"stb__image_8h.html#aa874b3ba909f3281d499894909678336":[6,0,0,0,18,11],
+"stb__image_8h.html#aa9994764695597161e8f3776e97caa99":[6,0,0,0,18,30],
+"stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79":[6,0,0,0,18,41],
+"stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524":[6,0,0,0,18,21],
+"stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e":[6,0,0,0,18,12],
+"stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4":[6,0,0,0,18,37],
+"stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f":[6,0,0,0,18,32],
+"stb__image_8h.html#ace82446ecd7b5c760cde062179660f46":[6,0,0,0,18,35],
+"stb__image_8h.html#acfef077febce3bc3f1f339de478f3315":[6,0,0,0,18,18],
+"stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a":[6,0,0,0,18,28],
+"stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb":[6,0,0,0,18,14],
+"stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258":[6,0,0,0,18,13],
+"stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c":[6,0,0,0,18,19],
+"stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48":[6,0,0,0,18,39],
+"stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa":[6,0,0,0,18,1],
+"stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70":[6,0,0,0,18,15],
+"stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048":[6,0,0,0,18,25],
+"stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077":[6,0,0,0,18,20],
+"stb__image_8h.html#af4f17acd30945a75901fdc022f90575f":[6,0,0,0,18,33],
+"stb__image_8h.html#af946583656a362a316b40c0421c20561":[6,0,0,0,18,24],
+"stb__image_8h_source.html":[6,0,0,0,18],
+"structstbi__io__callbacks.html":[5,0,1],
+"structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177":[5,0,1,0],
+"structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82":[5,0,1,1],
+"structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83":[5,0,1,2],
+"structyage_1_1Colour.html":[5,0,0,14],
+"structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd":[5,0,0,14,4],
+"structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99":[5,0,0,14,5],
+"structyage_1_1Colour.html#a585165d5109c81b6b2de6f1116406abd":[5,0,0,14,0],
+"structyage_1_1Colour.html#a5aef37a5ac37e44dc32f5f9b1ebee10c":[5,0,0,14,2],
+"structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f":[5,0,0,14,3],
+"structyage_1_1Colour.html#a8118ad802db7e61df770f7d3b5b88aaa":[5,0,0,14,1],
+"structyage_1_1LogMessage_1_1Meta.html":[5,0,0,6,0],
+"structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b":[5,0,0,6,0,1],
+"structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c":[5,0,0,6,0,2],
+"structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4":[5,0,0,6,0,0],
+"structyage_1_1Position.html":[5,0,0,13],
+"structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2":[5,0,0,13,0],
+"structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27":[5,0,0,13,3],
+"structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91":[5,0,0,13,2],
+"structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2":[5,0,0,13,1],
+"structyage_1_1Texture.html":[5,0,0,12],
+"structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5":[5,0,0,12,0],
+"structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968":[5,0,0,12,3],
+"structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0":[5,0,0,12,6],
+"structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e":[5,0,0,12,2],
+"structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046":[5,0,0,12,5],
+"structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598":[5,0,0,12,4],
+"structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850":[5,0,0,12,1],
+"structyage_1_1UV.html":[5,0,0,15],
+"structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793":[5,0,0,15,3],
+"structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053":[5,0,0,15,2],
+"structyage_1_1UV.html#ac918524789292937aae5803df3c2673f":[5,0,0,15,1],
+"structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde":[5,0,0,15,0],
+"structyage_1_1Vertex.html":[5,0,0,16],
+"structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182":[5,0,0,16,5],
+"structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e":[5,0,0,16,7],
+"structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50":[5,0,0,16,4],
+"structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf":[5,0,0,16,2],
+"structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e":[5,0,0,16,1],
+"structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a":[5,0,0,16,6],
+"structyage_1_1Vertex.html#acae9697c2762e37dfa4472b85fa112c3":[5,0,0,16,0],
+"structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d":[5,0,0,16,3],
"structyage_1_1details_1_1Coordinate.html":[5,0,0,0,0],
"structyage_1_1details_1_1Coordinate.html#a0b3a6d9aa1d5b846ad7ebc11bc77c629":[5,0,0,0,0,0],
"structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941":[5,0,0,0,0,2],
@@ -102,32 +110,44 @@ var NAVTREEINDEX2 =
"structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508":[5,0,0,0,0,5],
"structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc":[5,0,0,0,0,4],
"structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0":[5,0,0,0,0,3],
-"syncqueue_8h.html":[6,0,0,3,2],
-"syncqueue_8h_source.html":[6,0,0,3,2],
-"texture_8h.html":[6,0,0,0,26],
-"texture_8h_source.html":[6,0,0,0,26],
-"texturecache_8cpp.html":[6,0,0,0,27],
-"texturecache_8h.html":[6,0,0,0,28],
-"texturecache_8h_source.html":[6,0,0,0,28],
+"structyage_1_1details_1_1Glyph.html":[5,0,0,0,3],
+"structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d":[5,0,0,0,3,5],
+"structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da":[5,0,0,0,3,6],
+"structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c":[5,0,0,0,3,0],
+"structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed":[5,0,0,0,3,2],
+"structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc":[5,0,0,0,3,4],
+"structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056":[5,0,0,0,3,1],
+"structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9":[5,0,0,0,3,3],
+"structyage_1_1details_1_1RenderBatch.html":[5,0,0,0,2],
+"structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29":[5,0,0,0,2,1],
+"structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844":[5,0,0,0,2,0],
+"structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422":[5,0,0,0,2,2],
+"structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687":[5,0,0,0,2,3],
+"syncqueue_8h.html":[6,0,0,5,2],
+"syncqueue_8h_source.html":[6,0,0,5,2],
+"texture_8h.html":[6,0,0,1,1],
+"texture_8h_source.html":[6,0,0,1,1],
+"texturecache_8cpp.html":[6,0,0,0,19],
+"texturecache_8h.html":[6,0,0,0,20],
+"texturecache_8h_source.html":[6,0,0,0,20],
"todo.html":[1],
-"vertex_8h.html":[6,0,0,0,29],
-"vertex_8h_source.html":[6,0,0,0,29],
-"window_8cpp.html":[6,0,0,0,30],
-"window_8cpp.html#a7d04f91ba8586cb6dfac030f83c9a9ec":[6,0,0,0,30,0],
-"window_8h.html":[6,0,0,0,31],
-"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38":[6,0,0,0,31,1],
-"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f":[6,0,0,0,31,1,2],
-"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6":[6,0,0,0,31,1,0],
-"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648":[6,0,0,0,31,1,1],
-"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970":[6,0,0,0,31,1,3],
-"window_8h_source.html":[6,0,0,0,31],
-"yage_8cpp.html":[6,0,0,4],
-"yage_8cpp.html#a0bd2fedcbe862fdea1ea54b6b7d49bec":[6,0,0,4,0],
-"yage_8cpp.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce":[6,0,0,4,1],
-"yage_8cpp.html#ac9d8c7327204686b3c86f4ab48672618":[6,0,0,4,2],
-"yage_8h.html":[6,0,0,5],
-"yage_8h.html#a0bd2fedcbe862fdea1ea54b6b7d49bec":[6,0,0,5,0],
-"yage_8h.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce":[6,0,0,5,1],
-"yage_8h.html#ac9d8c7327204686b3c86f4ab48672618":[6,0,0,5,2],
-"yage_8h_source.html":[6,0,0,5]
+"vertex_8h.html":[6,0,0,1,2],
+"vertex_8h_source.html":[6,0,0,1,2],
+"window_8cpp.html":[6,0,0,0,21],
+"window_8h.html":[6,0,0,0,22],
+"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38":[6,0,0,0,22,1],
+"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f":[6,0,0,0,22,1,2],
+"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6":[6,0,0,0,22,1,0],
+"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648":[6,0,0,0,22,1,1],
+"window_8h.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970":[6,0,0,0,22,1,3],
+"window_8h_source.html":[6,0,0,0,22],
+"yage_8cpp.html":[6,0,0,6],
+"yage_8cpp.html#a0bd2fedcbe862fdea1ea54b6b7d49bec":[6,0,0,6,0],
+"yage_8cpp.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce":[6,0,0,6,1],
+"yage_8cpp.html#ac9d8c7327204686b3c86f4ab48672618":[6,0,0,6,2],
+"yage_8h.html":[6,0,0,7],
+"yage_8h.html#a0bd2fedcbe862fdea1ea54b6b7d49bec":[6,0,0,7,0],
+"yage_8h.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce":[6,0,0,7,1],
+"yage_8h.html#ac9d8c7327204686b3c86f4ab48672618":[6,0,0,7,2],
+"yage_8h_source.html":[6,0,0,7]
};
diff --git a/pages.html b/pages.html
index 7ce6102f..dc7fb48a 100644
--- a/pages.html
+++ b/pages.html
@@ -115,7 +115,7 @@ $(document).ready(function(){initNavTree('pages.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/particlebody_8cpp.html b/particlebody_8cpp.html
index c9979433..8efa8e77 100644
--- a/particlebody_8cpp.html
+++ b/particlebody_8cpp.html
@@ -125,7 +125,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -133,7 +134,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="particlebody_8cpp.html">particlebody.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/particlebody_8h.html b/particlebody_8h.html
index c2e659f1..d6f2a16b 100644
--- a/particlebody_8h.html
+++ b/particlebody_8h.html
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="particlebody_8h.html">particlebody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/particlebody_8h_source.html b/particlebody_8h_source.html
index 71db9444..6dc0f46b 100644
--- a/particlebody_8h_source.html
+++ b/particlebody_8h_source.html
@@ -148,7 +148,7 @@ $(document).ready(function(){initNavTree('particlebody_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="particlebody_8h.html">particlebody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/physics_8h.html b/physics_8h.html
index aae2c8a8..51f754ac 100644
--- a/physics_8h.html
+++ b/physics_8h.html
@@ -121,7 +121,8 @@ $(document).ready(function(){initNavTree('physics_8h.html','');});
</div>
<p><a href="physics_8h_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -129,7 +130,7 @@ $(document).ready(function(){initNavTree('physics_8h.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="physics_8h.html">physics.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/physics_8h_source.html b/physics_8h_source.html
index 252e5d09..e75da06f 100644
--- a/physics_8h_source.html
+++ b/physics_8h_source.html
@@ -132,7 +132,7 @@ $(document).ready(function(){initNavTree('physics_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="physics_8h.html">physics.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/picopng_8cpp.js b/picopng_8cpp.js
deleted file mode 100644
index 8d1b1d97..00000000
--- a/picopng_8cpp.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var picopng_8cpp =
-[
- [ "decodePNG", "picopng_8cpp.html#a0cf122e98752ed702393cbe30df51356", null ]
-]; \ No newline at end of file
diff --git a/picopng_8h.js b/picopng_8h.js
deleted file mode 100644
index 6191e657..00000000
--- a/picopng_8h.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var picopng_8h =
-[
- [ "decodePNG", "picopng_8h.html#a0cf122e98752ed702393cbe30df51356", null ]
-]; \ No newline at end of file
diff --git a/rectangle_8cpp.html b/rectangle_8cpp.html
new file mode 100644
index 00000000..99b9a77c
--- /dev/null
+++ b/rectangle_8cpp.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/rectangle.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('rectangle_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">rectangle.cpp File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="rectangle_8h_source.html">rectangle.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="vertex_8h_source.html">../data/vertex.h</a>&quot;</code><br/>
+<code>#include &lt;glad/glad.h&gt;</code><br/>
+<code>#include &lt;cstddef&gt;</code><br/>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
+<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="rectangle_8cpp.html">rectangle.cpp</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/picopng_8cpp.html b/rectangle_8h.html
index 590bb236..50bf22f8 100644
--- a/picopng_8cpp.html
+++ b/rectangle_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/picopng.cpp File Reference</title>
+<title>YAGE: yage/render/rectangle.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -86,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('picopng_8cpp.html','');});
+$(document).ready(function(){initNavTree('rectangle_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -105,33 +105,35 @@ $(document).ready(function(){initNavTree('picopng_8cpp.html','');});
<div class="header">
<div class="summary">
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#func-members">Functions</a> </div>
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
-<div class="title">picopng.cpp File Reference</div> </div>
+<div class="title">rectangle.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
-<div class="textblock"><code>#include &lt;cstdlib&gt;</code><br/>
-<code>#include &lt;vector&gt;</code><br/>
-</div><table class="memberdecls">
+<div class="textblock"><code>#include &quot;<a class="el" href="shape_8h_source.html">shape.h</a>&quot;</code><br/>
+<code>#include &lt;glm/glm.hpp&gt;</code><br/>
+</div>
+<p><a href="rectangle_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Rectangle.html">yage::Rectangle</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a0cf122e98752ed702393cbe30df51356"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">yage::decodePNG</a> (std::vector&lt; unsigned char &gt; &amp;out_image, unsigned long &amp;image_width, unsigned long &amp;image_height, const unsigned char *in_png, size_t in_size, bool convert_to_rgba32)</td></tr>
-<tr class="separator:a0cf122e98752ed702393cbe30df51356"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="picopng_8cpp.html">picopng.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="rectangle_8h.html">rectangle.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rectangle_8h_source.html b/rectangle_8h_source.html
new file mode 100644
index 00000000..8fbbcce2
--- /dev/null
+++ b/rectangle_8h_source.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/rectangle.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('rectangle_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">rectangle.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="rectangle_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef YAGE_RENDER_RECTANGLE_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_RENDER_RECTANGLE_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shape_8h.html">shape.h</a>&quot;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;glm/glm.hpp&gt;</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;{</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="classyage_1_1Rectangle.html"> 11</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Rectangle.html">Rectangle</a> : <span class="keyword">public</span> <a class="code" href="classyage_1_1Shape.html">Shape</a></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;{</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">Rectangle</a>(glm::vec4 position);</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">render</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; glm::vec4 position_;</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;};</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1Shape_html"><div class="ttname"><a href="classyage_1_1Shape.html">yage::Shape</a></div><div class="ttdef"><b>Definition:</b> shape.h:9</div></div>
+<div class="ttc" id="classyage_1_1Rectangle_html_af9ff615160254c8289e502fac8124891"><div class="ttname"><a href="classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891">yage::Rectangle::render</a></div><div class="ttdeci">virtual void render() const </div><div class="ttdef"><b>Definition:</b> rectangle.cpp:14</div></div>
+<div class="ttc" id="classyage_1_1Rectangle_html"><div class="ttname"><a href="classyage_1_1Rectangle.html">yage::Rectangle</a></div><div class="ttdef"><b>Definition:</b> rectangle.h:11</div></div>
+<div class="ttc" id="classyage_1_1Rectangle_html_a45a3203b887ffcdb6a0bc7f5a4de717e"><div class="ttname"><a href="classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e">yage::Rectangle::Rectangle</a></div><div class="ttdeci">Rectangle(glm::vec4 position)</div><div class="ttdef"><b>Definition:</b> rectangle.cpp:12</div></div>
+<div class="ttc" id="shape_8h_html"><div class="ttname"><a href="shape_8h.html">shape.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="rectangle_8h.html">rectangle.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/rectanglecollider_8cpp.html b/rectanglecollider_8cpp.html
index 4ef4021c..f4c82310 100644
--- a/rectanglecollider_8cpp.html
+++ b/rectanglecollider_8cpp.html
@@ -123,7 +123,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -131,7 +132,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rectanglecollider_8cpp.html">rectanglecollider.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rectanglecollider_8h.html b/rectanglecollider_8h.html
index 12ed8af4..511164df 100644
--- a/rectanglecollider_8h.html
+++ b/rectanglecollider_8h.html
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rectanglecollider_8h.html">rectanglecollider.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rectanglecollider_8h_source.html b/rectanglecollider_8h_source.html
index 35574925..46635422 100644
--- a/rectanglecollider_8h_source.html
+++ b/rectanglecollider_8h_source.html
@@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('rectanglecollider_8h_source.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rectanglecollider_8h.html">rectanglecollider.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/resourcemanager_8cpp.html b/resourcemanager_8cpp.html
index 7dc55202..dd2337a4 100644
--- a/resourcemanager_8cpp.html
+++ b/resourcemanager_8cpp.html
@@ -115,7 +115,7 @@ $(document).ready(function(){initNavTree('resourcemanager_8cpp.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="resourcemanager_8h_source.html">resourcemanager.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
@@ -124,7 +124,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -132,7 +133,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="resourcemanager_8cpp.html">resourcemanager.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/resourcemanager_8h.html b/resourcemanager_8h.html
index b7add7e8..c6fa185c 100644
--- a/resourcemanager_8h.html
+++ b/resourcemanager_8h.html
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="resourcemanager_8h.html">resourcemanager.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/resourcemanager_8h_source.html b/resourcemanager_8h_source.html
index 1bb5ef66..2a2abae6 100644
--- a/resourcemanager_8h_source.html
+++ b/resourcemanager_8h_source.html
@@ -119,33 +119,33 @@ $(document).ready(function(){initNavTree('resourcemanager_8h_source.html','');})
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>yage</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">class </span>Texture;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">struct </span>Texture;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classyage_1_1ResourceManager.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1ResourceManager.html">ResourceManager</a></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6"> 32</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classyage_1_1TextureCache.html">TextureCache</a> <a class="code" href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">texture_cache_</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">static</span> <a class="code" href="classyage_1_1TextureCache.html">TextureCache</a> texture_cache_;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">getTexture</a>(<span class="keyword">const</span> std::string &amp;texture_path);</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;};</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1ResourceManager_html_a2799a8ff957874fbe7b7c791781255f6"><div class="ttname"><a href="classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6">yage::ResourceManager::texture_cache_</a></div><div class="ttdeci">static TextureCache texture_cache_</div><div class="ttdef"><b>Definition:</b> resourcemanager.h:32</div></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">getTexture</a>(<span class="keyword">const</span> std::string &amp;texture_path, <span class="keywordtype">int</span> x = 1,</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">int</span> y = 1);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;};</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classyage_1_1ResourceManager_html"><div class="ttname"><a href="classyage_1_1ResourceManager.html">yage::ResourceManager</a></div><div class="ttdef"><b>Definition:</b> resourcemanager.h:29</div></div>
<div class="ttc" id="texturecache_8h_html"><div class="ttname"><a href="texturecache_8h.html">texturecache.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="classyage_1_1ResourceManager_html_a36d805924374f27aa7dbce1d47795b25"><div class="ttname"><a href="classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25">yage::ResourceManager::getTexture</a></div><div class="ttdeci">static Texture getTexture(const std::string &amp;texture_path)</div><div class="ttdef"><b>Definition:</b> resourcemanager.cpp:17</div></div>
<div class="ttc" id="structyage_1_1Texture_html"><div class="ttname"><a href="structyage_1_1Texture.html">yage::Texture</a></div><div class="ttdef"><b>Definition:</b> texture.h:17</div></div>
<div class="ttc" id="classyage_1_1TextureCache_html"><div class="ttname"><a href="classyage_1_1TextureCache.html">yage::TextureCache</a></div><div class="ttdef"><b>Definition:</b> texturecache.h:19</div></div>
+<div class="ttc" id="classyage_1_1ResourceManager_html_aec533f266d9b432050faed301f4191dc"><div class="ttname"><a href="classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc">yage::ResourceManager::getTexture</a></div><div class="ttdeci">static Texture getTexture(const std::string &amp;texture_path, int x=1, int y=1)</div><div class="ttdef"><b>Definition:</b> resourcemanager.cpp:17</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="resourcemanager_8h.html">resourcemanager.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rigidbody_8cpp.html b/rigidbody_8cpp.html
index c9d05a08..34a83d72 100644
--- a/rigidbody_8cpp.html
+++ b/rigidbody_8cpp.html
@@ -123,7 +123,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -131,7 +132,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rigidbody_8cpp.html">rigidbody.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rigidbody_8h.html b/rigidbody_8h.html
index c66e9eab..b18486c0 100644
--- a/rigidbody_8h.html
+++ b/rigidbody_8h.html
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rigidbody_8h.html">rigidbody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/rigidbody_8h_source.html b/rigidbody_8h_source.html
index db1b4233..e62fb570 100644
--- a/rigidbody_8h_source.html
+++ b/rigidbody_8h_source.html
@@ -141,7 +141,7 @@ $(document).ready(function(){initNavTree('rigidbody_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_a58d7658bbcfd3d3d7296185ebe55c28.html">physics</a></li><li class="navelem"><a class="el" href="rigidbody_8h.html">rigidbody.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/search/all_0.js b/search/all_0.js
index 58007fb5..5f5a017c 100644
--- a/search/all_0.js
+++ b/search/all_0.js
@@ -3,13 +3,10 @@ var searchData=
['a',['a',['../structyage_1_1Colour.html#a5aef37a5ac37e44dc32f5f9b1ebee10c',1,'yage::Colour::a()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a7fc56270e7a70fa81a5935b72eacbe29',1,'yage::A()']]],
['acceleration_5f',['acceleration_',['../classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f',1,'yage::Body']]],
['active',['Active',['../classyage_1_1Active.html',1,'yage']]],
- ['active',['Active',['../classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd',1,'yage::Active::Active(const Active &amp;)=delete'],['../classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b',1,'yage::Active::Active()']]],
+ ['active',['Active',['../classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd',1,'yage::Active']]],
['active_2ecpp',['active.cpp',['../active_8cpp.html',1,'']]],
['active_2eh',['active.h',['../active_8h.html',1,'']]],
- ['active_5f',['active_',['../classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744',1,'yage::Logger']]],
['add',['add',['../classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd',1,'yage::Logger']]],
- ['addattribute',['addAttribute',['../classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970',1,'yage::GlslProgram']]],
['apostrophe',['APOSTROPHE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9df35983f4024e31955de0f1e545e888',1,'yage']]],
- ['applyforce',['applyForce',['../classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878',1,'yage::Body::applyForce()'],['../classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b',1,'yage::ParticleBody::applyForce()']]],
- ['attribute_5findex_5f',['attribute_index_',['../classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486',1,'yage::GlslProgram']]]
+ ['applyforce',['applyForce',['../classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878',1,'yage::Body::applyForce()'],['../classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b',1,'yage::ParticleBody::applyForce()']]]
];
diff --git a/search/all_1.js b/search/all_1.js
index 14629377..756c75af 100644
--- a/search/all_1.js
+++ b/search/all_1.js
@@ -3,16 +3,15 @@ var searchData=
['b',['b',['../structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f',1,'yage::Colour::b()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a9d5ed678fe57bcca610140957afab571',1,'yage::B()']]],
['backslash',['BACKSLASH',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822aecb4a6f3440c2ed0dff59f17375a27c0',1,'yage']]],
['backspace',['BACKSPACE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6f5d8e41084b4d3d47fa621c459eede1',1,'yage']]],
- ['begin',['begin',['../classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872',1,'yage::SpriteBatch::begin()'],['../classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055',1,'yage::Matrix::begin()']]],
- ['body',['Body',['../classyage_1_1Body.html',1,'yage']]],
+ ['batch',['Batch',['../classyage_1_1Batch.html',1,'yage']]],
+ ['batch_2eh',['batch.h',['../batch_8h.html',1,'']]],
+ ['begin',['begin',['../classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055',1,'yage::Matrix::begin()'],['../classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d',1,'yage::Batch::begin()'],['../classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872',1,'yage::SpriteBatch::begin()']]],
['body',['Body',['../classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86',1,'yage::Body']]],
+ ['body',['Body',['../classyage_1_1Body.html',1,'yage']]],
['body_2ecpp',['body.cpp',['../body_8cpp.html',1,'']]],
['body_2eh',['body.h',['../body_8h.html',1,'']]],
['borderless',['BORDERLESS',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970',1,'yage']]],
- ['bottom_5fleft',['bottom_left',['../classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1',1,'yage::Glyph']]],
- ['bottom_5fleft_5f',['bottom_left_',['../classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad',1,'yage::Glyph']]],
- ['bottom_5fright',['bottom_right',['../classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2',1,'yage::Glyph']]],
- ['bottom_5fright_5f',['bottom_right_',['../classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234',1,'yage::Glyph']]],
- ['buffer_5f',['buffer_',['../classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5',1,'yage::LogMessage']]],
+ ['bottom_5fleft',['bottom_left',['../structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056',1,'yage::details::Glyph']]],
+ ['bottom_5fright',['bottom_right',['../structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed',1,'yage::details::Glyph']]],
['bug_20list',['Bug List',['../bug.html',1,'']]]
];
diff --git a/search/all_10.js b/search/all_10.js
index 21e7e3dc..19dc309b 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -1,6 +1,5 @@
var searchData=
[
['q',['Q',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822af09564c9ca56850d4cd6b3319e541aee',1,'yage']]],
- ['queue_5f',['queue_',['../classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3',1,'yage::Active::queue_()'],['../classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968',1,'yage::SyncQueue::queue_()']]],
['quit',['quit',['../namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618',1,'yage']]]
];
diff --git a/search/all_11.js b/search/all_11.js
index 0134a09f..b300307d 100644
--- a/search/all_11.js
+++ b/search/all_11.js
@@ -1,18 +1,22 @@
var searchData=
[
['r',['r',['../structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99',1,'yage::Colour::r()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae1e1d3d40573127e9ee0480caf1283d6',1,'yage::R()']]],
+ ['read',['read',['../structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82',1,'stbi_io_callbacks']]],
['readfiletobuffer',['readFileToBuffer',['../classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d',1,'yage::IoManager']]],
- ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
['readme_2emd',['README.md',['../yage_2physics_2README_8md.html',1,'']]],
+ ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
+ ['rectangle',['Rectangle',['../classyage_1_1Rectangle.html',1,'yage']]],
+ ['rectangle',['Rectangle',['../classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e',1,'yage::Rectangle']]],
+ ['rectangle_2ecpp',['rectangle.cpp',['../rectangle_8cpp.html',1,'']]],
+ ['rectangle_2eh',['rectangle.h',['../rectangle_8h.html',1,'']]],
['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html',1,'yage']]],
['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969',1,'yage::RectangleCollider']]],
['rectanglecollider_2ecpp',['rectanglecollider.cpp',['../rectanglecollider_8cpp.html',1,'']]],
['rectanglecollider_2eh',['rectanglecollider.h',['../rectanglecollider_8h.html',1,'']]],
['remove',['remove',['../classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245',1,'yage::Logger']]],
- ['render',['render',['../classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d',1,'yage::SpriteBatch']]],
- ['render_5fbatches_5f',['render_batches_',['../classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008',1,'yage::SpriteBatch']]],
- ['renderbatch',['RenderBatch',['../classyage_1_1RenderBatch.html',1,'yage']]],
- ['renderbatch',['RenderBatch',['../classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853',1,'yage::RenderBatch']]],
+ ['render',['render',['../classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65',1,'yage::Batch::render()'],['../classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891',1,'yage::Rectangle::render()'],['../classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539',1,'yage::Shape::render()'],['../classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d',1,'yage::SpriteBatch::render()']]],
+ ['renderbatch',['RenderBatch',['../structyage_1_1details_1_1RenderBatch.html',1,'yage::details']]],
+ ['renderbatch',['RenderBatch',['../structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844',1,'yage::details::RenderBatch']]],
['resourcemanager',['ResourceManager',['../classyage_1_1ResourceManager.html',1,'yage']]],
['resourcemanager_2ecpp',['resourcemanager.cpp',['../resourcemanager_8cpp.html',1,'']]],
['resourcemanager_2eh',['resourcemanager.h',['../resourcemanager_8h.html',1,'']]],
@@ -26,9 +30,7 @@ var searchData=
['rigidbody',['RigidBody',['../classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606',1,'yage::RigidBody']]],
['rigidbody_2ecpp',['rigidbody.cpp',['../rigidbody_8cpp.html',1,'']]],
['rigidbody_2eh',['rigidbody.h',['../rigidbody_8h.html',1,'']]],
- ['row',['Row',['../classyage_1_1details_1_1Row.html',1,'yage::details']]],
['row',['Row',['../classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06',1,'yage::details::Row']]],
- ['rowsize',['rowSize',['../classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1',1,'yage::Matrix']]],
- ['run',['run',['../classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b',1,'yage::Active']]],
- ['running_5f',['running_',['../classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db',1,'yage::Active']]]
+ ['row',['Row',['../classyage_1_1details_1_1Row.html',1,'yage::details']]],
+ ['rowsize',['rowSize',['../classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1',1,'yage::Matrix']]]
];
diff --git a/search/all_12.js b/search/all_12.js
index 670e06c6..6dcf5bd4 100644
--- a/search/all_12.js
+++ b/search/all_12.js
@@ -1,37 +1,91 @@
var searchData=
[
['s',['S',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5dbc98dcc983a70728bd082d1a47546e',1,'yage']]],
- ['scale_5f',['scale_',['../classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f',1,'yage::Camera']]],
['scroll_5flock',['SCROLL_LOCK',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a324bf1f059b99e2882bc1d567080d8ed',1,'yage']]],
['semicolon',['SEMICOLON',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5',1,'yage']]],
['send',['send',['../classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326',1,'yage::Active']]],
['setcolour',['setColour',['../structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf',1,'yage::Vertex']]],
+ ['setlevel',['setLevel',['../classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb',1,'yage::Logger']]],
['setposition',['setPosition',['../structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d',1,'yage::Vertex']]],
+ ['setuniform',['setUniform',['../classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215',1,'yage::Shader::setUniform(const std::string &amp;name, int value) const '],['../classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab',1,'yage::Shader::setUniform(const std::string &amp;name, float value) const '],['../classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78',1,'yage::Shader::setUniform(const std::string &amp;name, const glm::mat4 &amp;matrix) const ']]],
['setuv',['setUv',['../structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50',1,'yage::Vertex']]],
+ ['shader',['Shader',['../classyage_1_1Shader.html',1,'yage']]],
+ ['shader',['Shader',['../classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a',1,'yage::Shader::Shader(const std::string &amp;vertex_path, const std::string &amp;fragment_path)'],['../classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5',1,'yage::Shader::Shader(const Shader &amp;)=delete'],['../classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2',1,'yage::Shader::Shader(Shader &amp;&amp;)=delete']]],
+ ['shader_2ecpp',['shader.cpp',['../shader_8cpp.html',1,'']]],
+ ['shader_2eh',['shader.h',['../shader_8h.html',1,'']]],
+ ['shape',['Shape',['../classyage_1_1Shape.html',1,'yage']]],
+ ['shape_2eh',['shape.h',['../shape_8h.html',1,'']]],
['shouldclose',['shouldClose',['../classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8',1,'yage::Window']]],
['show',['show',['../classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34',1,'yage::Window']]],
['shown',['SHOWN',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6',1,'yage']]],
- ['sinks_5f',['sinks_',['../classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f',1,'yage::Logger']]],
['size_5f',['size_',['../classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308',1,'yage::Collider']]],
+ ['skip',['skip',['../structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83',1,'stbi_io_callbacks']]],
['slash',['SLASH',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e',1,'yage']]],
- ['sortglyphs',['sortGlyphs',['../classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a',1,'yage::SpriteBatch']]],
['space',['SPACE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57',1,'yage']]],
['sprite',['Sprite',['../classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987',1,'yage::Sprite::Sprite()=default'],['../classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e',1,'yage::Sprite::Sprite(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1',1,'yage::Sprite::Sprite(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0',1,'yage::SpriteSheet::sprite()']]],
['sprite',['Sprite',['../classyage_1_1Sprite.html',1,'yage']]],
['sprite_2ecpp',['sprite.cpp',['../sprite_8cpp.html',1,'']]],
['sprite_2eh',['sprite.h',['../sprite_8h.html',1,'']]],
+ ['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a',1,'yage::SpriteBatch::SpriteBatch()'],['../classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652',1,'yage::SpriteBatch::SpriteBatch(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e',1,'yage::SpriteBatch::SpriteBatch(SpriteBatch &amp;&amp;)=delete']]],
['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html',1,'yage']]],
- ['spritebatch',['SpriteBatch',['../classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f',1,'yage::RenderBatch::SpriteBatch()'],['../classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a',1,'yage::SpriteBatch::SpriteBatch()'],['../classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652',1,'yage::SpriteBatch::SpriteBatch(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e',1,'yage::SpriteBatch::SpriteBatch(SpriteBatch &amp;&amp;)=delete']]],
['spritebatch_2ecpp',['spritebatch.cpp',['../spritebatch_8cpp.html',1,'']]],
['spritebatch_2eh',['spritebatch.h',['../spritebatch_8h.html',1,'']]],
['spritemap',['SpriteMap',['../namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9',1,'yage::details']]],
- ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html',1,'yage']]],
['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6',1,'yage::SpriteSheet']]],
+ ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html',1,'yage']]],
['spritesheet_2ecpp',['spritesheet.cpp',['../spritesheet_8cpp.html',1,'']]],
['spritesheet_2eh',['spritesheet.h',['../spritesheet_8h.html',1,'']]],
+ ['stb_5fimage_2ecpp',['stb_image.cpp',['../stb__image_8cpp.html',1,'']]],
+ ['stb_5fimage_2eh',['stb_image.h',['../stb__image_8h.html',1,'']]],
+ ['stb_5fimage_5fimplementation',['STB_IMAGE_IMPLEMENTATION',['../stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78',1,'stb_image.cpp']]],
+ ['stbi_5fconvert_5fiphone_5fpng_5fto_5frgb',['stbi_convert_iphone_png_to_rgb',['../stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b',1,'stb_image.h']]],
+ ['stbi_5fdefault',['STBI_default',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029',1,'stb_image.h']]],
+ ['stbi_5ffailure_5freason',['stbi_failure_reason',['../stb__image_8h.html#aa874b3ba909f3281d499894909678336',1,'stb_image.h']]],
+ ['stbi_5fgrey',['STBI_grey',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa',1,'stb_image.h']]],
+ ['stbi_5fgrey_5falpha',['STBI_grey_alpha',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8',1,'stb_image.h']]],
+ ['stbi_5fhdr_5fto_5fldr_5fgamma',['stbi_hdr_to_ldr_gamma',['../stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e',1,'stb_image.h']]],
+ ['stbi_5fhdr_5fto_5fldr_5fscale',['stbi_hdr_to_ldr_scale',['../stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258',1,'stb_image.h']]],
+ ['stbi_5fimage_5ffree',['stbi_image_free',['../stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb',1,'stb_image.h']]],
+ ['stbi_5finfo',['stbi_info',['../stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5fcallbacks',['stbi_info_from_callbacks',['../stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5ffile',['stbi_info_from_file',['../stb__image_8h.html#a28abedef4a0a93909332080df6be0021',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5fmemory',['stbi_info_from_memory',['../stb__image_8h.html#acfef077febce3bc3f1f339de478f3315',1,'stb_image.h']]],
+ ['stbi_5fio_5fcallbacks',['stbi_io_callbacks',['../structstbi__io__callbacks.html',1,'']]],
+ ['stbi_5fis_5fhdr',['stbi_is_hdr',['../stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5fcallbacks',['stbi_is_hdr_from_callbacks',['../stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5ffile',['stbi_is_hdr_from_file',['../stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5fmemory',['stbi_is_hdr_from_memory',['../stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e',1,'stb_image.h']]],
+ ['stbi_5fldr_5fto_5fhdr_5fgamma',['stbi_ldr_to_hdr_gamma',['../stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb',1,'stb_image.h']]],
+ ['stbi_5fldr_5fto_5fhdr_5fscale',['stbi_ldr_to_hdr_scale',['../stb__image_8h.html#af946583656a362a316b40c0421c20561',1,'stb_image.h']]],
+ ['stbi_5fload',['stbi_load',['../stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048',1,'stb_image.h']]],
+ ['stbi_5fload_5f16',['stbi_load_16',['../stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee',1,'stb_image.h']]],
+ ['stbi_5fload_5f16_5ffrom_5fcallbacks',['stbi_load_16_from_callbacks',['../stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18',1,'stb_image.h']]],
+ ['stbi_5fload_5f16_5ffrom_5fmemory',['stbi_load_16_from_memory',['../stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5fcallbacks',['stbi_load_from_callbacks',['../stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5ffile',['stbi_load_from_file',['../stb__image_8h.html#aa9994764695597161e8f3776e97caa99',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5ffile_5f16',['stbi_load_from_file_16',['../stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5fmemory',['stbi_load_from_memory',['../stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f',1,'stb_image.h']]],
+ ['stbi_5floadf',['stbi_loadf',['../stb__image_8h.html#af4f17acd30945a75901fdc022f90575f',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5fcallbacks',['stbi_loadf_from_callbacks',['../stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5ffile',['stbi_loadf_from_file',['../stb__image_8h.html#ace82446ecd7b5c760cde062179660f46',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5fmemory',['stbi_loadf_from_memory',['../stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2',1,'stb_image.h']]],
+ ['stbi_5frgb',['STBI_rgb',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf',1,'stb_image.h']]],
+ ['stbi_5frgb_5falpha',['STBI_rgb_alpha',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293',1,'stb_image.h']]],
+ ['stbi_5fset_5fflip_5fvertically_5fon_5fload',['stbi_set_flip_vertically_on_load',['../stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4',1,'stb_image.h']]],
+ ['stbi_5fset_5funpremultiply_5fon_5fload',['stbi_set_unpremultiply_on_load',['../stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9',1,'stb_image.h']]],
+ ['stbi_5fuc',['stbi_uc',['../stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d',1,'stb_image.h']]],
+ ['stbi_5fus',['stbi_us',['../stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2',1,'stb_image.h']]],
+ ['stbi_5fversion',['STBI_VERSION',['../stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fbuffer',['stbi_zlib_decode_buffer',['../stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc',['stbi_zlib_decode_malloc',['../stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc_5fguesssize',['stbi_zlib_decode_malloc_guesssize',['../stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc_5fguesssize_5fheaderflag',['stbi_zlib_decode_malloc_guesssize_headerflag',['../stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fnoheader_5fbuffer',['stbi_zlib_decode_noheader_buffer',['../stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fnoheader_5fmalloc',['stbi_zlib_decode_noheader_malloc',['../stb__image_8h.html#a7fbd65c83495f13f22469fe493775739',1,'stb_image.h']]],
+ ['stbidef',['STBIDEF',['../stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2',1,'stb_image.h']]],
['swapbuffer',['swapBuffer',['../classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359',1,'yage::Window']]],
- ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html',1,'yage']]],
['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b',1,'yage::SyncQueue::SyncQueue()=default'],['../classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c',1,'yage::SyncQueue::SyncQueue(const SyncQueue &amp;)=delete']]],
+ ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html',1,'yage']]],
['syncqueue_2eh',['syncqueue.h',['../syncqueue_8h.html',1,'']]],
['syncqueue_3c_20callback_20_3e',['SyncQueue&lt; Callback &gt;',['../classyage_1_1SyncQueue.html',1,'yage']]]
];
diff --git a/search/all_13.js b/search/all_13.js
index 76b878ab..3356493e 100644
--- a/search/all_13.js
+++ b/search/all_13.js
@@ -3,22 +3,16 @@ var searchData=
['t',['T',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3',1,'yage']]],
['tab',['TAB',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822af684bf05fa3e81528c84d1d281d839f1',1,'yage']]],
['texture',['Texture',['../structyage_1_1Texture.html',1,'yage']]],
- ['texture',['Texture',['../structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5',1,'yage::Texture::Texture()'],['../structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c',1,'yage::Texture::Texture(GLuint id_i, int width_i, int height_i)'],['../classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2',1,'yage::Glyph::texture()'],['../classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d',1,'yage::RenderBatch::texture()']]],
+ ['texture',['Texture',['../structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5',1,'yage::Texture::Texture()'],['../structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850',1,'yage::Texture::Texture(GLuint id_i, int width_i, int height_i, int x_i=1, int y_i=1)'],['../structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687',1,'yage::details::RenderBatch::texture()'],['../structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc',1,'yage::details::Glyph::texture()']]],
['texture_2eh',['texture.h',['../texture_8h.html',1,'']]],
- ['texture_5f',['texture_',['../classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0',1,'yage::Sprite::texture_()'],['../classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8',1,'yage::Glyph::texture_()'],['../classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160',1,'yage::RenderBatch::texture_()'],['../classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8',1,'yage::SpriteSheet::texture_()']]],
- ['texture_5fcache_5f',['texture_cache_',['../classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6',1,'yage::ResourceManager']]],
- ['texture_5fmap_5f',['texture_map_',['../classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323',1,'yage::TextureCache']]],
['texturecache',['TextureCache',['../classyage_1_1TextureCache.html',1,'yage']]],
['texturecache',['TextureCache',['../classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692',1,'yage::TextureCache']]],
['texturecache_2ecpp',['texturecache.cpp',['../texturecache_8cpp.html',1,'']]],
['texturecache_2eh',['texturecache.h',['../texturecache_8h.html',1,'']]],
- ['thread_5f',['thread_',['../classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50',1,'yage::Active']]],
['todo_20list',['Todo List',['../todo.html',1,'']]],
['todolist_2edox',['todolist.dox',['../todolist_8dox.html',1,'']]],
- ['top_5fleft',['top_left',['../classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f',1,'yage::Glyph']]],
- ['top_5fleft_5f',['top_left_',['../classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d',1,'yage::Glyph']]],
- ['top_5fright',['top_right',['../classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec',1,'yage::Glyph']]],
- ['top_5fright_5f',['top_right_',['../classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa',1,'yage::Glyph']]],
+ ['top_5fleft',['top_left',['../structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d',1,'yage::details::Glyph']]],
+ ['top_5fright',['top_right',['../structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da',1,'yage::details::Glyph']]],
['tostring',['toString',['../classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8',1,'yage::Matrix::toString()'],['../classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae',1,'yage::Vector::toString()']]],
['transpose',['transpose',['../namespaceyage_1_1matrix.html#a62de4b4b6bab23717d957c370f2e41c7',1,'yage::matrix']]]
];
diff --git a/search/all_14.js b/search/all_14.js
index 50d06e32..de79f614 100644
--- a/search/all_14.js
+++ b/search/all_14.js
@@ -2,11 +2,9 @@ var searchData=
[
['u',['u',['../structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053',1,'yage::UV::u()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb',1,'yage::U()']]],
['unknown',['UNKNOWN',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a696b031073e74bf2cb98e5ef201d4aa3',1,'yage']]],
- ['unuse',['unuse',['../classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f',1,'yage::GlslProgram']]],
['up',['UP',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822afbaedde498cdead4f2780217646e9ba1',1,'yage']]],
- ['update',['update',['../classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86',1,'yage::Camera::update()'],['../classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36',1,'yage::Body::update()'],['../classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c',1,'yage::ParticleBody::update()']]],
- ['update_5fmatrix_5f',['update_matrix_',['../classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c',1,'yage::Camera']]],
- ['use',['use',['../classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3',1,'yage::GlslProgram']]],
+ ['update',['update',['../classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c',1,'yage::Camera::update()'],['../classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36',1,'yage::Body::update()'],['../classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c',1,'yage::ParticleBody::update()']]],
+ ['use',['use',['../classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c',1,'yage::Shader']]],
['uv',['uv',['../structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e',1,'yage::Vertex::uv()'],['../structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde',1,'yage::UV::UV()=default'],['../structyage_1_1UV.html#ac918524789292937aae5803df3c2673f',1,'yage::UV::UV(float u_, float v_)']]],
['uv',['UV',['../structyage_1_1UV.html',1,'yage']]]
];
diff --git a/search/all_15.js b/search/all_15.js
index 5bf72a1a..b459cf19 100644
--- a/search/all_15.js
+++ b/search/all_15.js
@@ -1,11 +1,8 @@
var searchData=
[
['v',['v',['../structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793',1,'yage::UV::v()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a5206560a306a2e085a437fd258eb57ce',1,'yage::V()']]],
- ['vao_5f',['vao_',['../classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1',1,'yage::SpriteBatch']]],
- ['vbo_5f',['vbo_',['../classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c',1,'yage::SpriteBatch']]],
- ['vbo_5fid_5f',['vbo_id_',['../classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad',1,'yage::Sprite']]],
- ['vector',['Vector',['../classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa',1,'yage::Vector::Vector()'],['../classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f',1,'yage::Vector::Vector(const Matrix&lt; Rows, 1, Type &gt; &amp;other)'],['../classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d',1,'yage::Vector::Vector(const std::vector&lt; Type &gt; &amp;data)']]],
['vector',['Vector',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vector',['Vector',['../classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa',1,'yage::Vector::Vector()'],['../classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f',1,'yage::Vector::Vector(const Matrix&lt; Rows, 1, Type &gt; &amp;other)'],['../classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d',1,'yage::Vector::Vector(const std::vector&lt; Type &gt; &amp;data)']]],
['vector2',['Vector2',['../classyage_1_1Vector2.html',1,'yage']]],
['vector2',['Vector2',['../classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea',1,'yage::Vector2::Vector2()'],['../classyage_1_1Vector2.html#af69d534302a406bac419589e0a2f2917',1,'yage::Vector2::Vector2(const std::vector&lt; Type &gt; &amp;data)'],['../classyage_1_1Vector2.html#a3ef3bc2954f387f1db2165a884765ad0',1,'yage::Vector2::Vector2(Type x, Type y)'],['../classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822',1,'yage::Vector2::Vector2(const Matrix&lt; 2, 1, Type &gt; &amp;other)']]],
['vector2_3c_20double_20_3e',['Vector2&lt; double &gt;',['../classyage_1_1Vector2.html',1,'yage']]],
@@ -29,6 +26,5 @@ var searchData=
['velocity_5f',['velocity_',['../classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741',1,'yage::Body']]],
['vertex',['Vertex',['../structyage_1_1Vertex.html',1,'yage']]],
['vertex',['Vertex',['../structyage_1_1Vertex.html#acae9697c2762e37dfa4472b85fa112c3',1,'yage::Vertex::Vertex()=default'],['../structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e',1,'yage::Vertex::Vertex(const Position &amp;position_, const Colour &amp;colour_, const UV &amp;uv_)']]],
- ['vertex_2eh',['vertex.h',['../vertex_8h.html',1,'']]],
- ['vertex_5fshader_5fid_5f',['vertex_shader_id_',['../classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7',1,'yage::GlslProgram']]]
+ ['vertex_2eh',['vertex.h',['../vertex_8h.html',1,'']]]
];
diff --git a/search/all_16.js b/search/all_16.js
index 84940abd..51b87874 100644
--- a/search/all_16.js
+++ b/search/all_16.js
@@ -1,16 +1,14 @@
var searchData=
[
['w',['w',['../classyage_1_1Vector4.html#acf752077d460438407ed3c84fe199f63',1,'yage::Vector4::w()'],['../classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d',1,'yage::Vector4::w(this-&gt;data_[3])'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276',1,'yage::W()']]],
+ ['warning',['WARNING',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b',1,'yage']]],
['width',['width',['../structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0',1,'yage::details::Coordinate::width()'],['../structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598',1,'yage::Texture::width()']]],
- ['width_5f',['width_',['../classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8',1,'yage::Sprite']]],
['window',['Window',['../classyage_1_1Window.html',1,'yage']]],
['window',['Window',['../classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e',1,'yage::Window::Window()'],['../classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf',1,'yage::Window::Window(const Window &amp;)=delete'],['../classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821',1,'yage::Window::Window(Window &amp;&amp;)=delete']]],
['window_2ecpp',['window.cpp',['../window_8cpp.html',1,'']]],
['window_2eh',['window.h',['../window_8h.html',1,'']]],
- ['window_5f',['window_',['../classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787',1,'yage::Window']]],
['windowflags',['WindowFlags',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38',1,'yage']]],
['world_5f1',['WORLD_1',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566',1,'yage']]],
['world_5f2',['WORLD_2',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22',1,'yage']]],
- ['wrapper_5f',['wrapper_',['../classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc',1,'yage::LogSink']]],
- ['write',['write',['../classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d',1,'yage::LogSink::write()'],['../structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac',1,'yage::LogSink::Concept::write()'],['../structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224',1,'yage::LogSink::Model::write()']]]
+ ['write',['write',['../classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d',1,'yage::LogSink']]]
];
diff --git a/search/all_17.js b/search/all_17.js
index 4ef3b67f..9cae784b 100644
--- a/search/all_17.js
+++ b/search/all_17.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['x',['x',['../structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc',1,'yage::details::Coordinate::x()'],['../structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91',1,'yage::Position::x()'],['../classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13',1,'yage::Vector4::x()'],['../classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf',1,'yage::Vector2::x()'],['../classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740',1,'yage::Vector2::x() const '],['../classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c',1,'yage::Vector4::x()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383',1,'yage::X()']]],
- ['x_5f',['x_',['../classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03',1,'yage::Sprite']]],
+ ['x',['x',['../structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc',1,'yage::details::Coordinate::x()'],['../structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046',1,'yage::Texture::x()'],['../structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91',1,'yage::Position::x()'],['../classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13',1,'yage::Vector4::x()'],['../classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf',1,'yage::Vector2::x()'],['../classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740',1,'yage::Vector2::x() const '],['../classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c',1,'yage::Vector4::x()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a02129bb861061d1a052c592e2dc6b383',1,'yage::X()']]],
['xposition',['xPosition',['../classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225',1,'yage::Body']]]
];
diff --git a/search/all_18.js b/search/all_18.js
index 7294c830..35ffa9f5 100644
--- a/search/all_18.js
+++ b/search/all_18.js
@@ -3,10 +3,15 @@ var searchData=
['details',['details',['../namespaceyage_1_1details.html',1,'yage']]],
['yage',['YAGE',['../index.html',1,'']]],
['matrix',['matrix',['../namespaceyage_1_1matrix.html',1,'yage']]],
- ['y',['y',['../structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508',1,'yage::details::Coordinate::y()'],['../structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27',1,'yage::Position::y()'],['../classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735',1,'yage::Vector4::y()'],['../classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2',1,'yage::Vector2::y()'],['../classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456',1,'yage::Vector2::y() const '],['../classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c',1,'yage::Vector4::y()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0',1,'yage::Y()']]],
- ['y_5f',['y_',['../classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed',1,'yage::Sprite']]],
+ ['y',['y',['../structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508',1,'yage::details::Coordinate::y()'],['../structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0',1,'yage::Texture::y()'],['../structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27',1,'yage::Position::y()'],['../classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735',1,'yage::Vector4::y()'],['../classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2',1,'yage::Vector2::y()'],['../classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456',1,'yage::Vector2::y() const '],['../classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c',1,'yage::Vector4::y()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a57cec4137b614c87cb4e24a3d003a3e0',1,'yage::Y()']]],
['yage',['yage',['../namespaceyage.html',1,'']]],
['yage_2ecpp',['yage.cpp',['../yage_8cpp.html',1,'']]],
['yage_2eh',['yage.h',['../yage_8h.html',1,'']]],
+ ['ylogdebug',['yLogDebug',['../logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f',1,'logger.h']]],
+ ['ylogerror',['yLogError',['../logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d',1,'logger.h']]],
+ ['ylogfatal',['yLogFatal',['../logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e',1,'logger.h']]],
+ ['ylogger',['yLogger',['../logger_8h.html#a9055939896a9ae18d3a833c5023e98d1',1,'logger.h']]],
+ ['yloginfo',['yLogInfo',['../logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d',1,'logger.h']]],
+ ['ylogwarning',['yLogWarning',['../logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a',1,'logger.h']]],
['yposition',['yPosition',['../classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364',1,'yage::Body']]]
];
diff --git a/search/all_19.js b/search/all_19.js
index d11030dd..1d118325 100644
--- a/search/all_19.js
+++ b/search/all_19.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['z',['z',['../classyage_1_1Vector3.html#a163c42efd0a4f365abb612c031859820',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#ac1b2968c7a6a6e9f2c74507760b73cdc',1,'yage::Vector4::z()'],['../classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583',1,'yage::Vector4::z()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5',1,'yage::Z()']]]
+ ['z',['z',['../classyage_1_1Vector3.html#a163c42efd0a4f365abb612c031859820',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#ac1b2968c7a6a6e9f2c74507760b73cdc',1,'yage::Vector4::z()'],['../classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583',1,'yage::Vector4::z()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a21c2e59531c8710156d34a3c30ac81d5',1,'yage::Z()']]],
+ ['zoom',['zoom',['../classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0',1,'yage::Camera']]]
];
diff --git a/search/all_1a.js b/search/all_1a.js
index 8d81ff33..4a39058c 100644
--- a/search/all_1a.js
+++ b/search/all_1a.js
@@ -2,9 +2,8 @@ var searchData=
[
['_7eactive',['~Active',['../classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2',1,'yage::Active']]],
['_7ecollisionbody',['~CollisionBody',['../classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b',1,'yage::CollisionBody']]],
- ['_7econcept',['~Concept',['../structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1',1,'yage::LogSink::Concept']]],
- ['_7eglslprogram',['~GlslProgram',['../classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7',1,'yage::GlslProgram']]],
['_7elogmessage',['~LogMessage',['../classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca',1,'yage::LogMessage']]],
+ ['_7eshader',['~Shader',['../classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd',1,'yage::Shader']]],
['_7esprite',['~Sprite',['../classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2',1,'yage::Sprite']]],
['_7espritebatch',['~SpriteBatch',['../classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a',1,'yage::SpriteBatch']]],
['_7ewindow',['~Window',['../classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0',1,'yage::Window']]]
diff --git a/search/all_2.js b/search/all_2.js
index c5b018d1..b2866051 100644
--- a/search/all_2.js
+++ b/search/all_2.js
@@ -6,11 +6,9 @@ var searchData=
['camera',['Camera',['../classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611',1,'yage::Camera']]],
['camera_2ecpp',['camera.cpp',['../camera_8cpp.html',1,'']]],
['camera_2eh',['camera.h',['../camera_8h.html',1,'']]],
- ['camera_5fmatrix_5f',['camera_matrix_',['../classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3',1,'yage::Camera']]],
['caps_5flock',['CAPS_LOCK',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae40af1d5cc55c55ae0bb25953f7a7ee2',1,'yage']]],
['clear',['clear',['../classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8',1,'yage::Logger']]],
['clearbuffer',['clearBuffer',['../classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58',1,'yage::Window']]],
- ['clone',['clone',['../structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d',1,'yage::LogSink::Concept::clone()'],['../structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf',1,'yage::LogSink::Model::clone()']]],
['collider',['Collider',['../classyage_1_1Collider.html',1,'yage']]],
['collider',['Collider',['../classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3',1,'yage::Collider']]],
['collider_2eh',['collider.h',['../collider_8h.html',1,'']]],
@@ -18,19 +16,11 @@ var searchData=
['collisionbody',['CollisionBody',['../classyage_1_1CollisionBody.html#a5289e613269facc45cd451872c17a83d',1,'yage::CollisionBody']]],
['collisionbody',['CollisionBody',['../classyage_1_1CollisionBody.html',1,'yage']]],
['collisionbody_2eh',['collisionbody.h',['../collisionbody_8h.html',1,'']]],
- ['colour',['Colour',['../structyage_1_1Colour.html#a585165d5109c81b6b2de6f1116406abd',1,'yage::Colour::Colour()'],['../structyage_1_1Colour.html#a8118ad802db7e61df770f7d3b5b88aaa',1,'yage::Colour::Colour(GLubyte r_, GLubyte g_, GLubyte b_, GLubyte a_)'],['../structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182',1,'yage::Vertex::colour()']]],
['colour',['Colour',['../structyage_1_1Colour.html',1,'yage']]],
+ ['colour',['colour',['../structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182',1,'yage::Vertex::colour()'],['../structyage_1_1Colour.html#a585165d5109c81b6b2de6f1116406abd',1,'yage::Colour::Colour()'],['../structyage_1_1Colour.html#a8118ad802db7e61df770f7d3b5b88aaa',1,'yage::Colour::Colour(GLubyte r_, GLubyte g_, GLubyte b_, GLubyte a_)']]],
['colsize',['colSize',['../classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1',1,'yage::Matrix']]],
['comma',['COMMA',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4d9b3e9fc12849d060371eb65154c751',1,'yage']]],
- ['compileshader',['compileShader',['../classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4',1,'yage::GlslProgram']]],
- ['compileshaderfromfile',['compileShaderFromFile',['../classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6',1,'yage::GlslProgram']]],
- ['compileshaders',['compileShaders',['../classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c',1,'yage::GlslProgram']]],
- ['compileshadersfromfile',['compileShadersFromFile',['../classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430',1,'yage::GlslProgram']]],
- ['concept',['Concept',['../structyage_1_1LogSink_1_1Concept.html',1,'yage::LogSink']]],
- ['cond_5f',['cond_',['../classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4',1,'yage::SyncQueue']]],
- ['coordinate',['Coordinate',['../structyage_1_1details_1_1Coordinate.html',1,'yage::details']]],
['coordinate',['Coordinate',['../structyage_1_1details_1_1Coordinate.html#a0b3a6d9aa1d5b846ad7ebc11bc77c629',1,'yage::details::Coordinate::Coordinate()=default'],['../structyage_1_1details_1_1Coordinate.html#a43fb6bd3e325d5cd7ec436778605db2a',1,'yage::details::Coordinate::Coordinate(int x_i, int y_i, int width_i, int height_i)']]],
- ['create',['create',['../classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745',1,'yage::Window::create()'],['../classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064',1,'yage::Active::create()']]],
- ['createrenderbatches',['createRenderBatches',['../classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c',1,'yage::SpriteBatch']]],
- ['createvertexarray',['createVertexArray',['../classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027',1,'yage::SpriteBatch']]]
+ ['coordinate',['Coordinate',['../structyage_1_1details_1_1Coordinate.html',1,'yage::details']]],
+ ['create',['create',['../classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745',1,'yage::Window::create()'],['../classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064',1,'yage::Active::create()']]]
];
diff --git a/search/all_3.js b/search/all_3.js
index f490c08f..9031fa60 100644
--- a/search/all_3.js
+++ b/search/all_3.js
@@ -2,14 +2,14 @@ var searchData=
[
['d',['D',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5',1,'yage']]],
['data_5f',['data_',['../classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed',1,'yage::Matrix']]],
- ['decodepng',['decodePNG',['../namespaceyage.html#a0cf122e98752ed702393cbe30df51356',1,'yage']]],
- ['defaultsetup',['defaultSetup',['../classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e',1,'yage::GlslProgram']]],
+ ['debug',['DEBUG',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15',1,'yage']]],
['delete',['DELETE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e',1,'yage']]],
['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]],
- ['depth',['depth',['../classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9',1,'yage::Glyph']]],
- ['depth_5f',['depth_',['../classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704',1,'yage::Glyph']]],
+ ['depth',['depth',['../structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9',1,'yage::details::Glyph']]],
['dot',['dot',['../namespaceyage_1_1matrix.html#ac4d2f55a5c3369ec42001776a582c30a',1,'yage::matrix']]],
['down',['DOWN',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f',1,'yage']]],
- ['draw',['draw',['../classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40',1,'yage::Sprite::draw()'],['../classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941',1,'yage::SpriteBatch::draw()']]],
+ ['draw',['draw',['../classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e',1,'yage::Drawable::draw()'],['../classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40',1,'yage::Sprite::draw()'],['../classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0',1,'yage::SpriteBatch::draw()']]],
+ ['drawable',['Drawable',['../classyage_1_1Drawable.html',1,'yage']]],
+ ['drawable_2eh',['drawable.h',['../drawable_8h.html',1,'']]],
['row_3c_20rows_2c_20cols_2c_20type_20_3e',['Row&lt; Rows, Cols, Type &gt;',['../classyage_1_1Matrix.html#a9e9cbf0fd7c768696ef909bdac1a706d',1,'yage::Matrix']]]
];
diff --git a/search/all_4.js b/search/all_4.js
index bf95fb5b..42a1767c 100644
--- a/search/all_4.js
+++ b/search/all_4.js
@@ -1,8 +1,11 @@
var searchData=
[
['e',['E',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3a3ea00cfc35332cedf6e5e9a32e94da',1,'yage']]],
- ['end',['end',['../classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632',1,'yage::SpriteBatch::end()'],['../classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851',1,'yage::Matrix::end()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905',1,'yage::END()']]],
+ ['ellipse_2eh',['ellipse.h',['../ellipse_8h.html',1,'']]],
+ ['end',['end',['../classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851',1,'yage::Matrix::end()'],['../classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e',1,'yage::Batch::end()'],['../classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632',1,'yage::SpriteBatch::end()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905',1,'yage::END()']]],
['enter',['ENTER',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13',1,'yage']]],
+ ['eof',['eof',['../structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177',1,'stbi_io_callbacks']]],
['equal',['EQUAL',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44',1,'yage']]],
+ ['error',['ERROR',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5',1,'yage']]],
['escape',['ESCAPE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d',1,'yage']]]
];
diff --git a/search/all_5.js b/search/all_5.js
index 133a05eb..6b0c76a4 100644
--- a/search/all_5.js
+++ b/search/all_5.js
@@ -26,12 +26,11 @@ var searchData=
['f7',['F7',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839',1,'yage']]],
['f8',['F8',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7',1,'yage']]],
['f9',['F9',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9',1,'yage']]],
+ ['fatal',['FATAL',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc',1,'yage']]],
['filecontent',['fileContent',['../classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9',1,'yage::SpriteSheet']]],
['filehandle_5f',['fileHandle_',['../logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1',1,'logsink.cpp']]],
- ['filelocations_5f',['fileLocations_',['../classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3',1,'yage::SpriteSheet']]],
['filename',['fileName',['../structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4',1,'yage::LogMessage::Meta']]],
['flush',['flush',['../classyage_1_1Logger.html#afe5dc1d30d3fd2599a119455672d6e00',1,'yage::Logger']]],
['force_5f',['force_',['../classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d',1,'yage::Body']]],
- ['fragment_5fshader_5fid_5f',['fragment_shader_id_',['../classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f',1,'yage::GlslProgram']]],
['fullscreen',['FULLSCREEN',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f',1,'yage']]]
];
diff --git a/search/all_6.js b/search/all_6.js
index e917adab..9c37fbe7 100644
--- a/search/all_6.js
+++ b/search/all_6.js
@@ -3,19 +3,12 @@ var searchData=
['g',['g',['../structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd',1,'yage::Colour::g()'],['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822adfcf28d0734569a6a693bc8194de62bf',1,'yage::G()']]],
['getcol',['getCol',['../classyage_1_1Matrix.html#a74475218328d6ef69701a6e261df925b',1,'yage::Matrix']]],
['getrow',['getRow',['../classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8',1,'yage::Matrix']]],
- ['gettexture',['getTexture',['../classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25',1,'yage::ResourceManager::getTexture()'],['../classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e',1,'yage::TextureCache::getTexture()']]],
+ ['gettexture',['getTexture',['../classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc',1,'yage::ResourceManager::getTexture()'],['../classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f',1,'yage::TextureCache::getTexture()']]],
['gettexturefromspritesheet',['getTextureFromSpriteSheet',['../classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd',1,'yage::TextureCache']]],
- ['getuniformlocation',['getUniformLocation',['../classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d',1,'yage::GlslProgram']]],
+ ['glfw_5finclude_5fnone',['GLFW_INCLUDE_NONE',['../input_8h.html#a088324ad8995e3eb76024e3e79083d48',1,'input.h']]],
['glfwerrorcallback',['glfwErrorCallback',['../namespaceyage.html#a0bd2fedcbe862fdea1ea54b6b7d49bec',1,'yage']]],
- ['glog',['gLog',['../logger_8h.html#aade1a167159e476dee85a6a097cb7ccc',1,'logger.h']]],
- ['glslprogram',['GlslProgram',['../classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4',1,'yage::GlslProgram::GlslProgram()=default'],['../classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd',1,'yage::GlslProgram::GlslProgram(const GlslProgram &amp;)=delete'],['../classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290',1,'yage::GlslProgram::GlslProgram(GlslProgram &amp;&amp;)=delete']]],
- ['glslprogram',['GlslProgram',['../classyage_1_1GlslProgram.html',1,'yage']]],
- ['glslprogram_2ecpp',['glslprogram.cpp',['../glslprogram_8cpp.html',1,'']]],
- ['glslprogram_2eh',['glslprogram.h',['../glslprogram_8h.html',1,'']]],
- ['glyph',['Glyph',['../classyage_1_1Glyph.html',1,'yage']]],
- ['glyph',['Glyph',['../classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f',1,'yage::Glyph']]],
- ['glyph_5fptrs_5f',['glyph_ptrs_',['../classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e',1,'yage::SpriteBatch']]],
- ['glyphs_5f',['glyphs_',['../classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200',1,'yage::SpriteBatch']]],
+ ['glyph',['Glyph',['../structyage_1_1details_1_1Glyph.html',1,'yage::details']]],
+ ['glyph',['Glyph',['../structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c',1,'yage::details::Glyph']]],
['grave_5faccent',['GRAVE_ACCENT',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1547ad05c44be2cc614be32159bf666b',1,'yage']]],
['gravity',['GRAVITY',['../classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766',1,'yage::Body']]],
['gravity_5f',['gravity_',['../classyage_1_1Body.html#a454a7c59d07c94afb0a35c3d53ec2191',1,'yage::Body']]]
diff --git a/search/all_7.js b/search/all_7.js
index 2e0a846e..41d6c522 100644
--- a/search/all_7.js
+++ b/search/all_7.js
@@ -2,7 +2,6 @@ var searchData=
[
['h',['H',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac1d9f50f86825a1a2302ec2449c17196',1,'yage']]],
['height',['height',['../structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941',1,'yage::details::Coordinate::height()'],['../structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e',1,'yage::Texture::height()']]],
- ['height_5f',['height_',['../classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3',1,'yage::Sprite']]],
['hidden',['HIDDEN',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648',1,'yage']]],
['hide',['hide',['../classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115',1,'yage::Window']]],
['home',['HOME',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a710533dd879dd1202e5c73b27705bf02',1,'yage']]]
diff --git a/search/all_8.js b/search/all_8.js
index f1573cd1..eb720a18 100644
--- a/search/all_8.js
+++ b/search/all_8.js
@@ -5,10 +5,8 @@ var searchData=
['imageloader',['ImageLoader',['../classyage_1_1ImageLoader.html',1,'yage']]],
['imageloader_2ecpp',['imageloader.cpp',['../imageloader_8cpp.html',1,'']]],
['imageloader_2eh',['imageloader.h',['../imageloader_8h.html',1,'']]],
- ['impl',['impl',['../structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d',1,'yage::LogSink::Model']]],
- ['index_5f',['index_',['../classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3',1,'yage::details::Row']]],
- ['init',['init',['../classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1',1,'yage::Sprite::init()'],['../namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce',1,'yage::init()']]],
- ['initshaderid',['initShaderId',['../classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9',1,'yage::GlslProgram']]],
+ ['info',['INFO',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3',1,'yage']]],
+ ['init',['init',['../classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477',1,'yage::Batch::init()'],['../classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1',1,'yage::Sprite::init()'],['../namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce',1,'yage::init()']]],
['input_2eh',['input.h',['../input_8h.html',1,'']]],
['insert',['INSERT',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b',1,'yage']]],
['inside',['inside',['../classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9',1,'yage::Collider::inside()'],['../classyage_1_1RectangleCollider.html#ac8d8e6bdb12c21be12f7d398242147c4',1,'yage::RectangleCollider::inside()']]],
diff --git a/search/all_a.js b/search/all_a.js
index 6149de9e..95d31d2f 100644
--- a/search/all_a.js
+++ b/search/all_a.js
@@ -2,7 +2,7 @@ var searchData=
[
['k',['K',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822aa5f3c6a11b03839d46af9fb43c97c188',1,'yage']]],
['key',['key',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822',1,'yage']]],
- ['key_5fcallback',['key_callback',['../namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec',1,'yage']]],
+ ['keypressed',['keyPressed',['../classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006',1,'yage::Window']]],
['kp_5f0',['KP_0',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822affb2ce8868d49c78376bf7e76c88fd52',1,'yage']]],
['kp_5f1',['KP_1',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822afdcbdc22f7e22388bf5905c290bcfe4b',1,'yage']]],
['kp_5f2',['KP_2',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a2d0bfa737eccfce7842cd2230eed6712',1,'yage']]],
diff --git a/search/all_b.js b/search/all_b.js
index f384d394..5bc41c42 100644
--- a/search/all_b.js
+++ b/search/all_b.js
@@ -8,16 +8,17 @@ var searchData=
['left_5fcontrol',['LEFT_CONTROL',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822addf133566f544b297f2f84874c283589',1,'yage']]],
['left_5fshift',['LEFT_SHIFT',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab6c7e6204e97690efd79d6f513ed5613',1,'yage']]],
['left_5fsuper',['LEFT_SUPER',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822afd816cf0346d4939b4cf3bed78dd7fde',1,'yage']]],
- ['lineno',['lineNo',['../structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362',1,'yage::LogMessage::Meta']]],
- ['linkshaders',['linkShaders',['../classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27',1,'yage::GlslProgram']]],
+ ['level',['level',['../structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b',1,'yage::LogMessage::Meta']]],
+ ['line',['line',['../structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c',1,'yage::LogMessage::Meta']]],
['loadpng',['loadPng',['../classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32',1,'yage::ImageLoader']]],
['logger',['Logger',['../classyage_1_1Logger.html',1,'yage']]],
- ['logger',['Logger',['../classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a',1,'yage::LogMessage::Logger()'],['../classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64',1,'yage::Logger::Logger()']]],
+ ['logger',['Logger',['../classyage_1_1LogMessage.html#aff02b76416d2846736b7ecd798921a0a',1,'yage::LogMessage::Logger()'],['../classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64',1,'yage::Logger::Logger()'],['../classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352',1,'yage::Logger::Logger(const std::string &amp;file_path)'],['../classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b',1,'yage::Logger::Logger(LogLevel min_level)'],['../classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074',1,'yage::Logger::Logger(LogLevel min_level, const std::string &amp;file_path)']]],
['logger_2ecpp',['logger.cpp',['../logger_8cpp.html',1,'']]],
+ ['logger_2edox',['logger.dox',['../logger_8dox.html',1,'']]],
['logger_2eh',['logger.h',['../logger_8h.html',1,'']]],
- ['loglevel',['LogLevel',['../classLogLevel.html',1,'LogLevel'],['../classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec',1,'LogLevel::LogLevel()']]],
+ ['loglevel',['LogLevel',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788',1,'yage']]],
['loglevel_2eh',['loglevel.h',['../loglevel_8h.html',1,'']]],
- ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be',1,'yage::LogMessage::LogMessage(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f',1,'yage::LogMessage::LogMessage(Logger *owner, const std::string &amp;fileName_i, int lineNum_i)'],['../classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0',1,'yage::LogMessage::LogMessage(LogMessage &amp;&amp;msg)']]],
+ ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be',1,'yage::LogMessage']]],
['logmessage',['LogMessage',['../classyage_1_1LogMessage.html',1,'yage']]],
['logmessage_2ecpp',['logmessage.cpp',['../logmessage_8cpp.html',1,'']]],
['logmessage_2eh',['logmessage.h',['../logmessage_8h.html',1,'']]],
diff --git a/search/all_c.js b/search/all_c.js
index 13238fea..1ad1f18a 100644
--- a/search/all_c.js
+++ b/search/all_c.js
@@ -4,19 +4,15 @@ var searchData=
['makeconsolesink',['makeConsoleSink',['../namespaceyage.html#ab54350a8dbf59338c99ab4f43cfa2858',1,'yage']]],
['makefilesink',['makeFileSink',['../namespaceyage.html#ad537beeea51c8314e407fadd24affc34',1,'yage::makeFileSink(const std::string &amp;filename)'],['../namespaceyage.html#a6b288197f6a97f197dda60e5b54f1841',1,'yage::makeFileSink(std::string &amp;&amp;filename)']]],
['mass_5f',['mass_',['../classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289',1,'yage::Body']]],
- ['matrix',['Matrix',['../classyage_1_1Matrix.html',1,'yage']]],
['matrix',['Matrix',['../classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad',1,'yage::Matrix::Matrix()'],['../classyage_1_1Matrix.html#a191b02ff353d04f18779d4c84e20927b',1,'yage::Matrix::Matrix(const std::vector&lt; Type &gt; &amp;data)']]],
+ ['matrix',['Matrix',['../classyage_1_1Matrix.html',1,'yage']]],
['matrix_2edox',['matrix.dox',['../matrix_8dox.html',1,'']]],
['matrix_2eh',['matrix.h',['../matrix_8h.html',1,'']]],
['matrix_3c_20rows_2c_201_2c_20double_20_3e',['Matrix&lt; Rows, 1, double &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
['matrix_3c_20rows_2c_201_2c_20type_20_3e',['Matrix&lt; Rows, 1, Type &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
['menu',['MENU',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a3ed53fbeb1eab0443561b68ca0c0b5cf',1,'yage']]],
['meta',['Meta',['../structyage_1_1LogMessage_1_1Meta.html',1,'yage::LogMessage']]],
- ['meta_5f',['meta_',['../classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee',1,'yage::LogMessage']]],
['minus',['MINUS',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822affc0d9b54a1fe677c4c9e6b050e67c81',1,'yage']]],
- ['model',['Model',['../structyage_1_1LogSink_1_1Model.html',1,'yage::LogSink']]],
- ['model',['Model',['../structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9',1,'yage::LogSink::Model']]],
['move',['move',['../classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324',1,'yage::Camera']]],
- ['multiply',['multiply',['../namespaceyage_1_1matrix.html#a277125ad9fa06a7119c59d350e129985',1,'yage::matrix']]],
- ['mutex_5f',['mutex_',['../classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b',1,'yage::SyncQueue']]]
+ ['multiply',['multiply',['../namespaceyage_1_1matrix.html#a277125ad9fa06a7119c59d350e129985',1,'yage::matrix']]]
];
diff --git a/search/all_d.js b/search/all_d.js
index bbb0b8b6..92dd4330 100644
--- a/search/all_d.js
+++ b/search/all_d.js
@@ -12,6 +12,5 @@ var searchData=
['num8',['NUM8',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac63bd90003103ca242fe9202fe10c3e9',1,'yage']]],
['num9',['NUM9',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822abb2cbd684a16faa1624ae1b3a4ceaa2c',1,'yage']]],
['num_5flock',['NUM_LOCK',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb0d0bf9279e78f982deba761110e434',1,'yage']]],
- ['num_5fvertices',['num_vertices',['../classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e',1,'yage::RenderBatch::num_vertices()'],['../classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5',1,'yage::SpriteBatch::NUM_VERTICES()']]],
- ['num_5fvertices_5f',['num_vertices_',['../classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba',1,'yage::RenderBatch']]]
+ ['num_5fvertices',['num_vertices',['../structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29',1,'yage::details::RenderBatch::num_vertices()'],['../classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5',1,'yage::SpriteBatch::NUM_VERTICES()']]]
];
diff --git a/search/all_e.js b/search/all_e.js
index 6cea0982..bf2b74b0 100644
--- a/search/all_e.js
+++ b/search/all_e.js
@@ -1,9 +1,8 @@
var searchData=
[
['o',['O',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822af186217753c37b9b9f958d906208506e',1,'yage']]],
- ['offset',['offset',['../classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944',1,'yage::RenderBatch']]],
- ['offset_5f',['offset_',['../classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7',1,'yage::RenderBatch']]],
- ['operator_28_29',['operator()',['../classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6',1,'yage::Logger']]],
+ ['offset',['offset',['../structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422',1,'yage::details::RenderBatch']]],
+ ['operator_28_29',['operator()',['../classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2',1,'yage::Logger']]],
['operator_2a',['operator*',['../namespaceyage.html#ad8903f6a93ac89f16846458540717507',1,'yage::operator*(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a090cbd6b767b583364e9cbe78d8a8d5a',1,'yage::operator*(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
['operator_2b',['operator+',['../namespaceyage.html#a226cc29763f745fd175844f4263d5dae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)'],['../namespaceyage.html#a6b77afaa1cd077df90b9daccbfc2cbae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a947133b8fc764d9fc5c5d8b08821cf32',1,'yage::operator+(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
['operator_2b_3d',['operator+=',['../classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228',1,'yage::Matrix']]],
@@ -11,9 +10,7 @@ var searchData=
['operator_2d_3d',['operator-=',['../classyage_1_1Matrix.html#acc2d0763f060c923ce53b37143d0a7bb',1,'yage::Matrix']]],
['operator_2f',['operator/',['../namespaceyage.html#acca4a23afb94173695bbc1e1f2cde2b3',1,'yage']]],
['operator_3c_3c',['operator&lt;&lt;',['../classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90',1,'yage::LogMessage::operator&lt;&lt;(const T &amp;value)'],['../classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab',1,'yage::LogMessage::operator&lt;&lt;(std::ostream &amp;(*fn)(std::ostream &amp;os))'],['../namespaceyage.html#a7ed614bc9d3e8b9f3f8d32b6a7ff28eb',1,'yage::operator&lt;&lt;()']]],
- ['operator_3d',['operator=',['../classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad',1,'yage::GlslProgram::operator=(const GlslProgram &amp;)=delete'],['../classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2',1,'yage::GlslProgram::operator=(GlslProgram &amp;&amp;)=delete'],['../classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae',1,'yage::LogMessage::operator=(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da',1,'yage::LogMessage::operator=(LogMessage &amp;&amp;msg)=delete'],['../classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc',1,'yage::LogSink::operator=(const LogSink &amp;sink)'],['../classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356',1,'yage::LogSink::operator=(LogSink &amp;&amp;sink)'],['../classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee',1,'yage::Sprite::operator=(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897',1,'yage::Sprite::operator=(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737',1,'yage::SpriteBatch::operator=(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f',1,'yage::SpriteBatch::operator=(SpriteBatch &amp;&amp;)=delete'],['../classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db',1,'yage::Window::operator=(const Window &amp;)=delete'],['../classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de',1,'yage::Window::operator=(Window &amp;&amp;)=delete'],['../classyage_1_1Active.html#add837044e73e4bc9849f09495535600c',1,'yage::Active::operator=()'],['../classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6',1,'yage::SyncQueue::operator=()']]],
+ ['operator_3d',['operator=',['../classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae',1,'yage::LogMessage::operator=(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da',1,'yage::LogMessage::operator=(LogMessage &amp;&amp;msg)=delete'],['../classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc',1,'yage::LogSink::operator=(const LogSink &amp;sink)'],['../classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356',1,'yage::LogSink::operator=(LogSink &amp;&amp;sink)'],['../classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db',1,'yage::Window::operator=(const Window &amp;)=delete'],['../classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de',1,'yage::Window::operator=(Window &amp;&amp;)=delete'],['../classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a',1,'yage::Shader::operator=(const Shader &amp;)=delete'],['../classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05',1,'yage::Shader::operator=(Shader &amp;&amp;)=delete'],['../classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee',1,'yage::Sprite::operator=(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897',1,'yage::Sprite::operator=(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737',1,'yage::SpriteBatch::operator=(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f',1,'yage::SpriteBatch::operator=(SpriteBatch &amp;&amp;)=delete'],['../classyage_1_1Active.html#add837044e73e4bc9849f09495535600c',1,'yage::Active::operator=()'],['../classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6',1,'yage::SyncQueue::operator=()']]],
['operator_3d_3d',['operator==',['../classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9',1,'yage::LogSink::operator==()'],['../namespaceyage.html#a5ddd829cb1c7c4c880d0fd53326858fe',1,'yage::operator==()']]],
- ['operator_5b_5d',['operator[]',['../classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190',1,'yage::details::Row::operator[](int col)'],['../classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736',1,'yage::details::Row::operator[](int col) const '],['../classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145',1,'yage::Matrix::operator[](int row)'],['../classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6',1,'yage::Matrix::operator[](int row) const '],['../classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2',1,'yage::Vector::operator[](int col)'],['../classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35',1,'yage::Vector::operator[](int col) const ']]],
- ['ortho_5fmatrix_5f',['ortho_matrix_',['../classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26',1,'yage::Camera']]],
- ['owner_5f',['owner_',['../classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792',1,'yage::LogMessage']]]
+ ['operator_5b_5d',['operator[]',['../classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190',1,'yage::details::Row::operator[](int col)'],['../classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736',1,'yage::details::Row::operator[](int col) const '],['../classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145',1,'yage::Matrix::operator[](int row)'],['../classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6',1,'yage::Matrix::operator[](int row) const '],['../classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2',1,'yage::Vector::operator[](int col)'],['../classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35',1,'yage::Vector::operator[](int col) const ']]]
];
diff --git a/search/all_f.js b/search/all_f.js
index a387642e..9c3640aa 100644
--- a/search/all_f.js
+++ b/search/all_f.js
@@ -4,8 +4,6 @@ var searchData=
['p',['P',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a44c29edb103a2872f519ad0c9a0fdaaa',1,'yage']]],
['page_5fdown',['PAGE_DOWN',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae9a23c5ce3d34b40123d65ca14b2e88f',1,'yage']]],
['page_5fup',['PAGE_UP',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ae791d936f894ce58dd18bf603edcb9b4',1,'yage']]],
- ['parent_5f',['parent_',['../classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8',1,'yage::details::Row']]],
- ['parsejson',['parseJson',['../classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98',1,'yage::SpriteSheet']]],
['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html',1,'yage']]],
['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0',1,'yage::ParticleBody']]],
['particlebody_2ecpp',['particlebody.cpp',['../particlebody_8cpp.html',1,'']]],
@@ -13,14 +11,11 @@ var searchData=
['pause',['PAUSE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a291554596c183e837f0a6bec3767c891',1,'yage']]],
['period',['PERIOD',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ade58a28573783fe95304a260ccd90362',1,'yage']]],
['physics_2eh',['physics.h',['../physics_8h.html',1,'']]],
- ['picopng_2ecpp',['picopng.cpp',['../picopng_8cpp.html',1,'']]],
- ['picopng_2eh',['picopng.h',['../picopng_8h.html',1,'']]],
['pollevents',['pollEvents',['../classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5',1,'yage::Window']]],
['pop',['pop',['../classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e',1,'yage::SyncQueue::pop()'],['../classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27',1,'yage::SyncQueue::pop(T &amp;item)']]],
+ ['position',['position',['../structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a',1,'yage::Vertex::position()'],['../structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2',1,'yage::Position::Position()=default'],['../structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2',1,'yage::Position::Position(float x_, float y_)']]],
['position',['Position',['../structyage_1_1Position.html',1,'yage']]],
- ['position',['Position',['../structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2',1,'yage::Position::Position()=default'],['../structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2',1,'yage::Position::Position(float x_, float y_)'],['../structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a',1,'yage::Vertex::position()']]],
- ['position_5f',['position_',['../classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2',1,'yage::Camera::position_()'],['../classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157',1,'yage::Body::position_()'],['../classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161',1,'yage::Collider::position_()']]],
+ ['position_5f',['position_',['../classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157',1,'yage::Body::position_()'],['../classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161',1,'yage::Collider::position_()']]],
['print_5fscreen',['PRINT_SCREEN',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a853f8ded7a96b5a765704974e6a3ca96',1,'yage']]],
- ['program_5fid_5f',['program_id_',['../classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b',1,'yage::GlslProgram']]],
['push',['push',['../classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1',1,'yage::SyncQueue::push(const T &amp;item)'],['../classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678',1,'yage::SyncQueue::push(T &amp;&amp;item)']]]
];
diff --git a/search/classes_1.js b/search/classes_1.js
index 967cc615..61df6759 100644
--- a/search/classes_1.js
+++ b/search/classes_1.js
@@ -1,4 +1,5 @@
var searchData=
[
+ ['batch',['Batch',['../classyage_1_1Batch.html',1,'yage']]],
['body',['Body',['../classyage_1_1Body.html',1,'yage']]]
];
diff --git a/search/classes_2.js b/search/classes_2.js
index 61329756..39c1012f 100644
--- a/search/classes_2.js
+++ b/search/classes_2.js
@@ -4,6 +4,5 @@ var searchData=
['collider',['Collider',['../classyage_1_1Collider.html',1,'yage']]],
['collisionbody',['CollisionBody',['../classyage_1_1CollisionBody.html',1,'yage']]],
['colour',['Colour',['../structyage_1_1Colour.html',1,'yage']]],
- ['concept',['Concept',['../structyage_1_1LogSink_1_1Concept.html',1,'yage::LogSink']]],
['coordinate',['Coordinate',['../structyage_1_1details_1_1Coordinate.html',1,'yage::details']]]
];
diff --git a/search/classes_3.js b/search/classes_3.js
index 2376c33c..ccdffb99 100644
--- a/search/classes_3.js
+++ b/search/classes_3.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['glslprogram',['GlslProgram',['../classyage_1_1GlslProgram.html',1,'yage']]],
- ['glyph',['Glyph',['../classyage_1_1Glyph.html',1,'yage']]]
+ ['drawable',['Drawable',['../classyage_1_1Drawable.html',1,'yage']]]
];
diff --git a/search/classes_4.js b/search/classes_4.js
index 31f6033f..4316901e 100644
--- a/search/classes_4.js
+++ b/search/classes_4.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['imageloader',['ImageLoader',['../classyage_1_1ImageLoader.html',1,'yage']]],
- ['iomanager',['IoManager',['../classyage_1_1IoManager.html',1,'yage']]]
+ ['glyph',['Glyph',['../structyage_1_1details_1_1Glyph.html',1,'yage::details']]]
];
diff --git a/search/classes_5.js b/search/classes_5.js
index 5de22e77..31f6033f 100644
--- a/search/classes_5.js
+++ b/search/classes_5.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['logger',['Logger',['../classyage_1_1Logger.html',1,'yage']]],
- ['loglevel',['LogLevel',['../classLogLevel.html',1,'']]],
- ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html',1,'yage']]],
- ['logsink',['LogSink',['../classyage_1_1LogSink.html',1,'yage']]]
+ ['imageloader',['ImageLoader',['../classyage_1_1ImageLoader.html',1,'yage']]],
+ ['iomanager',['IoManager',['../classyage_1_1IoManager.html',1,'yage']]]
];
diff --git a/search/classes_6.js b/search/classes_6.js
index 10f335b6..f1ddc024 100644
--- a/search/classes_6.js
+++ b/search/classes_6.js
@@ -1,8 +1,6 @@
var searchData=
[
- ['matrix',['Matrix',['../classyage_1_1Matrix.html',1,'yage']]],
- ['matrix_3c_20rows_2c_201_2c_20double_20_3e',['Matrix&lt; Rows, 1, double &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
- ['matrix_3c_20rows_2c_201_2c_20type_20_3e',['Matrix&lt; Rows, 1, Type &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
- ['meta',['Meta',['../structyage_1_1LogMessage_1_1Meta.html',1,'yage::LogMessage']]],
- ['model',['Model',['../structyage_1_1LogSink_1_1Model.html',1,'yage::LogSink']]]
+ ['logger',['Logger',['../classyage_1_1Logger.html',1,'yage']]],
+ ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html',1,'yage']]],
+ ['logsink',['LogSink',['../classyage_1_1LogSink.html',1,'yage']]]
];
diff --git a/search/classes_7.js b/search/classes_7.js
index d616947f..5c0e52cf 100644
--- a/search/classes_7.js
+++ b/search/classes_7.js
@@ -1,5 +1,7 @@
var searchData=
[
- ['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html',1,'yage']]],
- ['position',['Position',['../structyage_1_1Position.html',1,'yage']]]
+ ['matrix',['Matrix',['../classyage_1_1Matrix.html',1,'yage']]],
+ ['matrix_3c_20rows_2c_201_2c_20double_20_3e',['Matrix&lt; Rows, 1, double &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
+ ['matrix_3c_20rows_2c_201_2c_20type_20_3e',['Matrix&lt; Rows, 1, Type &gt;',['../classyage_1_1Matrix.html',1,'yage']]],
+ ['meta',['Meta',['../structyage_1_1LogMessage_1_1Meta.html',1,'yage::LogMessage']]]
];
diff --git a/search/classes_8.js b/search/classes_8.js
index 162d7250..d616947f 100644
--- a/search/classes_8.js
+++ b/search/classes_8.js
@@ -1,8 +1,5 @@
var searchData=
[
- ['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html',1,'yage']]],
- ['renderbatch',['RenderBatch',['../classyage_1_1RenderBatch.html',1,'yage']]],
- ['resourcemanager',['ResourceManager',['../classyage_1_1ResourceManager.html',1,'yage']]],
- ['rigidbody',['RigidBody',['../classyage_1_1RigidBody.html',1,'yage']]],
- ['row',['Row',['../classyage_1_1details_1_1Row.html',1,'yage::details']]]
+ ['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html',1,'yage']]],
+ ['position',['Position',['../structyage_1_1Position.html',1,'yage']]]
];
diff --git a/search/classes_9.js b/search/classes_9.js
index 25300b0d..5c9a6968 100644
--- a/search/classes_9.js
+++ b/search/classes_9.js
@@ -1,8 +1,9 @@
var searchData=
[
- ['sprite',['Sprite',['../classyage_1_1Sprite.html',1,'yage']]],
- ['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html',1,'yage']]],
- ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html',1,'yage']]],
- ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html',1,'yage']]],
- ['syncqueue_3c_20callback_20_3e',['SyncQueue&lt; Callback &gt;',['../classyage_1_1SyncQueue.html',1,'yage']]]
+ ['rectangle',['Rectangle',['../classyage_1_1Rectangle.html',1,'yage']]],
+ ['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html',1,'yage']]],
+ ['renderbatch',['RenderBatch',['../structyage_1_1details_1_1RenderBatch.html',1,'yage::details']]],
+ ['resourcemanager',['ResourceManager',['../classyage_1_1ResourceManager.html',1,'yage']]],
+ ['rigidbody',['RigidBody',['../classyage_1_1RigidBody.html',1,'yage']]],
+ ['row',['Row',['../classyage_1_1details_1_1Row.html',1,'yage::details']]]
];
diff --git a/search/classes_a.js b/search/classes_a.js
index bb215bc2..8ff19f3c 100644
--- a/search/classes_a.js
+++ b/search/classes_a.js
@@ -1,5 +1,11 @@
var searchData=
[
- ['texture',['Texture',['../structyage_1_1Texture.html',1,'yage']]],
- ['texturecache',['TextureCache',['../classyage_1_1TextureCache.html',1,'yage']]]
+ ['shader',['Shader',['../classyage_1_1Shader.html',1,'yage']]],
+ ['shape',['Shape',['../classyage_1_1Shape.html',1,'yage']]],
+ ['sprite',['Sprite',['../classyage_1_1Sprite.html',1,'yage']]],
+ ['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html',1,'yage']]],
+ ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html',1,'yage']]],
+ ['stbi_5fio_5fcallbacks',['stbi_io_callbacks',['../structstbi__io__callbacks.html',1,'']]],
+ ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html',1,'yage']]],
+ ['syncqueue_3c_20callback_20_3e',['SyncQueue&lt; Callback &gt;',['../classyage_1_1SyncQueue.html',1,'yage']]]
];
diff --git a/search/classes_b.js b/search/classes_b.js
index 92c686bb..bb215bc2 100644
--- a/search/classes_b.js
+++ b/search/classes_b.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['uv',['UV',['../structyage_1_1UV.html',1,'yage']]]
+ ['texture',['Texture',['../structyage_1_1Texture.html',1,'yage']]],
+ ['texturecache',['TextureCache',['../classyage_1_1TextureCache.html',1,'yage']]]
];
diff --git a/search/classes_c.js b/search/classes_c.js
index d084cf51..92c686bb 100644
--- a/search/classes_c.js
+++ b/search/classes_c.js
@@ -1,13 +1,4 @@
var searchData=
[
- ['vector',['Vector',['../classyage_1_1Vector.html',1,'yage']]],
- ['vector2',['Vector2',['../classyage_1_1Vector2.html',1,'yage']]],
- ['vector2_3c_20double_20_3e',['Vector2&lt; double &gt;',['../classyage_1_1Vector2.html',1,'yage']]],
- ['vector3',['Vector3',['../classyage_1_1Vector3.html',1,'yage']]],
- ['vector4',['Vector4',['../classyage_1_1Vector4.html',1,'yage']]],
- ['vector_3c_202_2c_20double_20_3e',['Vector&lt; 2, double &gt;',['../classyage_1_1Vector.html',1,'yage']]],
- ['vector_3c_202_2c_20type_20_3e',['Vector&lt; 2, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
- ['vector_3c_203_2c_20type_20_3e',['Vector&lt; 3, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
- ['vector_3c_204_2c_20type_20_3e',['Vector&lt; 4, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
- ['vertex',['Vertex',['../structyage_1_1Vertex.html',1,'yage']]]
+ ['uv',['UV',['../structyage_1_1UV.html',1,'yage']]]
];
diff --git a/search/classes_d.js b/search/classes_d.js
index 50e8b3e6..d084cf51 100644
--- a/search/classes_d.js
+++ b/search/classes_d.js
@@ -1,4 +1,13 @@
var searchData=
[
- ['window',['Window',['../classyage_1_1Window.html',1,'yage']]]
+ ['vector',['Vector',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vector2',['Vector2',['../classyage_1_1Vector2.html',1,'yage']]],
+ ['vector2_3c_20double_20_3e',['Vector2&lt; double &gt;',['../classyage_1_1Vector2.html',1,'yage']]],
+ ['vector3',['Vector3',['../classyage_1_1Vector3.html',1,'yage']]],
+ ['vector4',['Vector4',['../classyage_1_1Vector4.html',1,'yage']]],
+ ['vector_3c_202_2c_20double_20_3e',['Vector&lt; 2, double &gt;',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vector_3c_202_2c_20type_20_3e',['Vector&lt; 2, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vector_3c_203_2c_20type_20_3e',['Vector&lt; 3, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vector_3c_204_2c_20type_20_3e',['Vector&lt; 4, Type &gt;',['../classyage_1_1Vector.html',1,'yage']]],
+ ['vertex',['Vertex',['../structyage_1_1Vertex.html',1,'yage']]]
];
diff --git a/search/functions_19.html b/search/classes_e.html
index 18e111c9..24a3ef3a 100644
--- a/search/functions_19.html
+++ b/search/classes_e.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.6">
<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="functions_19.js"></script>
+<script type="text/javascript" src="classes_e.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
diff --git a/search/classes_e.js b/search/classes_e.js
new file mode 100644
index 00000000..50e8b3e6
--- /dev/null
+++ b/search/classes_e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['window',['Window',['../classyage_1_1Window.html',1,'yage']]]
+];
diff --git a/search/defines_0.js b/search/defines_0.js
index fd1d6054..88c1088a 100644
--- a/search/defines_0.js
+++ b/search/defines_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['glog',['gLog',['../logger_8h.html#aade1a167159e476dee85a6a097cb7ccc',1,'logger.h']]]
+ ['glfw_5finclude_5fnone',['GLFW_INCLUDE_NONE',['../input_8h.html#a088324ad8995e3eb76024e3e79083d48',1,'input.h']]]
];
diff --git a/search/defines_1.html b/search/defines_1.html
new file mode 100644
index 00000000..9e1d9fa1
--- /dev/null
+++ b/search/defines_1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/defines_1.js b/search/defines_1.js
new file mode 100644
index 00000000..6ff17ae2
--- /dev/null
+++ b/search/defines_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['stb_5fimage_5fimplementation',['STB_IMAGE_IMPLEMENTATION',['../stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78',1,'stb_image.cpp']]],
+ ['stbi_5fversion',['STBI_VERSION',['../stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa',1,'stb_image.h']]],
+ ['stbidef',['STBIDEF',['../stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2',1,'stb_image.h']]]
+];
diff --git a/search/defines_2.html b/search/defines_2.html
new file mode 100644
index 00000000..6ef4b980
--- /dev/null
+++ b/search/defines_2.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/defines_2.js b/search/defines_2.js
new file mode 100644
index 00000000..f91968cc
--- /dev/null
+++ b/search/defines_2.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['ylogdebug',['yLogDebug',['../logger_8h.html#a0061fe08a4e2d9ed843a782044d3528f',1,'logger.h']]],
+ ['ylogerror',['yLogError',['../logger_8h.html#ac71f194a096b3d7b4cf4ec448ee8b87d',1,'logger.h']]],
+ ['ylogfatal',['yLogFatal',['../logger_8h.html#a89062c0e6f5d9d0dd34553259c0fe00e',1,'logger.h']]],
+ ['ylogger',['yLogger',['../logger_8h.html#a9055939896a9ae18d3a833c5023e98d1',1,'logger.h']]],
+ ['yloginfo',['yLogInfo',['../logger_8h.html#a17afd33b46d111ec5e97f20e2c667e2d',1,'logger.h']]],
+ ['ylogwarning',['yLogWarning',['../logger_8h.html#ac26448787b9e07f1cf6e928e23ef9b7a',1,'logger.h']]]
+];
diff --git a/search/enums_1.js b/search/enums_1.js
index 59289f8c..c289225e 100644
--- a/search/enums_1.js
+++ b/search/enums_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['windowflags',['WindowFlags',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38',1,'yage']]]
+ ['loglevel',['LogLevel',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788',1,'yage']]]
];
diff --git a/search/enums_2.html b/search/enums_2.html
new file mode 100644
index 00000000..f96cf0a7
--- /dev/null
+++ b/search/enums_2.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/enums_2.js b/search/enums_2.js
new file mode 100644
index 00000000..59289f8c
--- /dev/null
+++ b/search/enums_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['windowflags',['WindowFlags',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38',1,'yage']]]
+];
diff --git a/search/enumvalues_12.js b/search/enumvalues_12.js
index e17463e3..7f157cb7 100644
--- a/search/enumvalues_12.js
+++ b/search/enumvalues_12.js
@@ -5,5 +5,10 @@ var searchData=
['semicolon',['SEMICOLON',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822abaaceccc27b1d4e0968c999583f97de5',1,'yage']]],
['shown',['SHOWN',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6',1,'yage']]],
['slash',['SLASH',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a646da671ca01bb5d84dbb5fb2238dc8e',1,'yage']]],
- ['space',['SPACE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57',1,'yage']]]
+ ['space',['SPACE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a6506ae39fdca9845e3a6de3865183e57',1,'yage']]],
+ ['stbi_5fdefault',['STBI_default',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029',1,'stb_image.h']]],
+ ['stbi_5fgrey',['STBI_grey',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa',1,'stb_image.h']]],
+ ['stbi_5fgrey_5falpha',['STBI_grey_alpha',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8',1,'stb_image.h']]],
+ ['stbi_5frgb',['STBI_rgb',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf',1,'stb_image.h']]],
+ ['stbi_5frgb_5falpha',['STBI_rgb_alpha',['../stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293',1,'stb_image.h']]]
];
diff --git a/search/enumvalues_16.js b/search/enumvalues_16.js
index 476b3bdd..22bb240f 100644
--- a/search/enumvalues_16.js
+++ b/search/enumvalues_16.js
@@ -1,6 +1,7 @@
var searchData=
[
['w',['W',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61e9c06ea9a85a5088a499df6458d276',1,'yage']]],
+ ['warning',['WARNING',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a059e9861e0400dfbe05c98a841f3f96b',1,'yage']]],
['world_5f1',['WORLD_1',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a1ab6dcd85380f2d3e882fbd2f6fda566',1,'yage']]],
['world_5f2',['WORLD_2',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822acb8104ace1979f9537c7f40de0622a22',1,'yage']]]
];
diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js
index 523431ed..bc21a9a4 100644
--- a/search/enumvalues_3.js
+++ b/search/enumvalues_3.js
@@ -1,6 +1,7 @@
var searchData=
[
['d',['D',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822af623e75af30e62bbd73d6df5b50bb7b5',1,'yage']]],
+ ['debug',['DEBUG',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788adc30ec20708ef7b0f641ef78b7880a15',1,'yage']]],
['delete',['DELETE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a32f68a60cef40faedbc6af20298c1a1e',1,'yage']]],
['down',['DOWN',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ac4e0e4e3118472beeb2ae75827450f1f',1,'yage']]]
];
diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js
index e85a8500..3d82a1a5 100644
--- a/search/enumvalues_4.js
+++ b/search/enumvalues_4.js
@@ -4,5 +4,6 @@ var searchData=
['end',['END',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab1a326c06d88bf042f73d70f50197905',1,'yage']]],
['enter',['ENTER',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a331b3100a485d8cacff1d3df8e9b0c13',1,'yage']]],
['equal',['EQUAL',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a969f331a87d8c958473c32b4d0e61a44',1,'yage']]],
+ ['error',['ERROR',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788abb1ca97ec761fc37101737ba0aa2e7c5',1,'yage']]],
['escape',['ESCAPE',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822adaaedac409335b869929ea43fa44be5d',1,'yage']]]
];
diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js
index 2c87a18c..9558f141 100644
--- a/search/enumvalues_5.js
+++ b/search/enumvalues_5.js
@@ -26,5 +26,6 @@ var searchData=
['f7',['F7',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a47489eb597b7db34caa24b1fc78fc839',1,'yage']]],
['f8',['F8',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4787509ad9f9d747a81a30e9dde3d4a7',1,'yage']]],
['f9',['F9',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a892a245e287c163080b23db737d3c4c9',1,'yage']]],
+ ['fatal',['FATAL',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a19da7170bea36556dde582519795f3fc',1,'yage']]],
['fullscreen',['FULLSCREEN',['../namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f',1,'yage']]]
];
diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js
index 36a2574c..8bfebcf9 100644
--- a/search/enumvalues_8.js
+++ b/search/enumvalues_8.js
@@ -1,5 +1,6 @@
var searchData=
[
['i',['I',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822add7536794b63bf90eccfd37f9b147d7f',1,'yage']]],
+ ['info',['INFO',['../namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788a551b723eafd6a31d444fcb2f5920fbd3',1,'yage']]],
['insert',['INSERT',['../namespaceyage.html#ad5a9307442e5daa8810aff942564a822a61ee777e7f71dc466c3b2c685d8d313b',1,'yage']]]
];
diff --git a/search/files_1.js b/search/files_1.js
index e7ca9dcb..2cee3cc6 100644
--- a/search/files_1.js
+++ b/search/files_1.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['batch_2eh',['batch.h',['../batch_8h.html',1,'']]],
['body_2ecpp',['body.cpp',['../body_8cpp.html',1,'']]],
['body_2eh',['body.h',['../body_8h.html',1,'']]]
];
diff --git a/search/files_3.js b/search/files_3.js
index 30795829..27ddd525 100644
--- a/search/files_3.js
+++ b/search/files_3.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['glslprogram_2ecpp',['glslprogram.cpp',['../glslprogram_8cpp.html',1,'']]],
- ['glslprogram_2eh',['glslprogram.h',['../glslprogram_8h.html',1,'']]]
+ ['drawable_2eh',['drawable.h',['../drawable_8h.html',1,'']]]
];
diff --git a/search/files_4.js b/search/files_4.js
index e6b1ede0..f4e207d8 100644
--- a/search/files_4.js
+++ b/search/files_4.js
@@ -1,8 +1,4 @@
var searchData=
[
- ['imageloader_2ecpp',['imageloader.cpp',['../imageloader_8cpp.html',1,'']]],
- ['imageloader_2eh',['imageloader.h',['../imageloader_8h.html',1,'']]],
- ['input_2eh',['input.h',['../input_8h.html',1,'']]],
- ['iomanager_2ecpp',['iomanager.cpp',['../iomanager_8cpp.html',1,'']]],
- ['iomanager_2eh',['iomanager.h',['../iomanager_8h.html',1,'']]]
+ ['ellipse_2eh',['ellipse.h',['../ellipse_8h.html',1,'']]]
];
diff --git a/search/files_5.js b/search/files_5.js
index 6db82c45..e6b1ede0 100644
--- a/search/files_5.js
+++ b/search/files_5.js
@@ -1,10 +1,8 @@
var searchData=
[
- ['logger_2ecpp',['logger.cpp',['../logger_8cpp.html',1,'']]],
- ['logger_2eh',['logger.h',['../logger_8h.html',1,'']]],
- ['loglevel_2eh',['loglevel.h',['../loglevel_8h.html',1,'']]],
- ['logmessage_2ecpp',['logmessage.cpp',['../logmessage_8cpp.html',1,'']]],
- ['logmessage_2eh',['logmessage.h',['../logmessage_8h.html',1,'']]],
- ['logsink_2ecpp',['logsink.cpp',['../logsink_8cpp.html',1,'']]],
- ['logsink_2eh',['logsink.h',['../logsink_8h.html',1,'']]]
+ ['imageloader_2ecpp',['imageloader.cpp',['../imageloader_8cpp.html',1,'']]],
+ ['imageloader_2eh',['imageloader.h',['../imageloader_8h.html',1,'']]],
+ ['input_2eh',['input.h',['../input_8h.html',1,'']]],
+ ['iomanager_2ecpp',['iomanager.cpp',['../iomanager_8cpp.html',1,'']]],
+ ['iomanager_2eh',['iomanager.h',['../iomanager_8h.html',1,'']]]
];
diff --git a/search/files_6.js b/search/files_6.js
index 42177e69..8c02e7f3 100644
--- a/search/files_6.js
+++ b/search/files_6.js
@@ -1,5 +1,11 @@
var searchData=
[
- ['matrix_2edox',['matrix.dox',['../matrix_8dox.html',1,'']]],
- ['matrix_2eh',['matrix.h',['../matrix_8h.html',1,'']]]
+ ['logger_2ecpp',['logger.cpp',['../logger_8cpp.html',1,'']]],
+ ['logger_2edox',['logger.dox',['../logger_8dox.html',1,'']]],
+ ['logger_2eh',['logger.h',['../logger_8h.html',1,'']]],
+ ['loglevel_2eh',['loglevel.h',['../loglevel_8h.html',1,'']]],
+ ['logmessage_2ecpp',['logmessage.cpp',['../logmessage_8cpp.html',1,'']]],
+ ['logmessage_2eh',['logmessage.h',['../logmessage_8h.html',1,'']]],
+ ['logsink_2ecpp',['logsink.cpp',['../logsink_8cpp.html',1,'']]],
+ ['logsink_2eh',['logsink.h',['../logsink_8h.html',1,'']]]
];
diff --git a/search/files_7.js b/search/files_7.js
index 9185ae59..42177e69 100644
--- a/search/files_7.js
+++ b/search/files_7.js
@@ -1,8 +1,5 @@
var searchData=
[
- ['particlebody_2ecpp',['particlebody.cpp',['../particlebody_8cpp.html',1,'']]],
- ['particlebody_2eh',['particlebody.h',['../particlebody_8h.html',1,'']]],
- ['physics_2eh',['physics.h',['../physics_8h.html',1,'']]],
- ['picopng_2ecpp',['picopng.cpp',['../picopng_8cpp.html',1,'']]],
- ['picopng_2eh',['picopng.h',['../picopng_8h.html',1,'']]]
+ ['matrix_2edox',['matrix.dox',['../matrix_8dox.html',1,'']]],
+ ['matrix_2eh',['matrix.h',['../matrix_8h.html',1,'']]]
];
diff --git a/search/files_8.js b/search/files_8.js
index 11dd2b12..385e6c4c 100644
--- a/search/files_8.js
+++ b/search/files_8.js
@@ -1,11 +1,6 @@
var searchData=
[
- ['readme_2emd',['README.md',['../yage_2physics_2README_8md.html',1,'']]],
- ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
- ['rectanglecollider_2ecpp',['rectanglecollider.cpp',['../rectanglecollider_8cpp.html',1,'']]],
- ['rectanglecollider_2eh',['rectanglecollider.h',['../rectanglecollider_8h.html',1,'']]],
- ['resourcemanager_2ecpp',['resourcemanager.cpp',['../resourcemanager_8cpp.html',1,'']]],
- ['resourcemanager_2eh',['resourcemanager.h',['../resourcemanager_8h.html',1,'']]],
- ['rigidbody_2ecpp',['rigidbody.cpp',['../rigidbody_8cpp.html',1,'']]],
- ['rigidbody_2eh',['rigidbody.h',['../rigidbody_8h.html',1,'']]]
+ ['particlebody_2ecpp',['particlebody.cpp',['../particlebody_8cpp.html',1,'']]],
+ ['particlebody_2eh',['particlebody.h',['../particlebody_8h.html',1,'']]],
+ ['physics_2eh',['physics.h',['../physics_8h.html',1,'']]]
];
diff --git a/search/files_9.js b/search/files_9.js
index dd9bb674..7ca6e6f0 100644
--- a/search/files_9.js
+++ b/search/files_9.js
@@ -1,10 +1,13 @@
var searchData=
[
- ['sprite_2ecpp',['sprite.cpp',['../sprite_8cpp.html',1,'']]],
- ['sprite_2eh',['sprite.h',['../sprite_8h.html',1,'']]],
- ['spritebatch_2ecpp',['spritebatch.cpp',['../spritebatch_8cpp.html',1,'']]],
- ['spritebatch_2eh',['spritebatch.h',['../spritebatch_8h.html',1,'']]],
- ['spritesheet_2ecpp',['spritesheet.cpp',['../spritesheet_8cpp.html',1,'']]],
- ['spritesheet_2eh',['spritesheet.h',['../spritesheet_8h.html',1,'']]],
- ['syncqueue_2eh',['syncqueue.h',['../syncqueue_8h.html',1,'']]]
+ ['readme_2emd',['README.md',['../yage_2physics_2README_8md.html',1,'']]],
+ ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
+ ['rectangle_2ecpp',['rectangle.cpp',['../rectangle_8cpp.html',1,'']]],
+ ['rectangle_2eh',['rectangle.h',['../rectangle_8h.html',1,'']]],
+ ['rectanglecollider_2ecpp',['rectanglecollider.cpp',['../rectanglecollider_8cpp.html',1,'']]],
+ ['rectanglecollider_2eh',['rectanglecollider.h',['../rectanglecollider_8h.html',1,'']]],
+ ['resourcemanager_2ecpp',['resourcemanager.cpp',['../resourcemanager_8cpp.html',1,'']]],
+ ['resourcemanager_2eh',['resourcemanager.h',['../resourcemanager_8h.html',1,'']]],
+ ['rigidbody_2ecpp',['rigidbody.cpp',['../rigidbody_8cpp.html',1,'']]],
+ ['rigidbody_2eh',['rigidbody.h',['../rigidbody_8h.html',1,'']]]
];
diff --git a/search/files_a.js b/search/files_a.js
index b27f863e..e6d66a8b 100644
--- a/search/files_a.js
+++ b/search/files_a.js
@@ -1,7 +1,15 @@
var searchData=
[
- ['texture_2eh',['texture.h',['../texture_8h.html',1,'']]],
- ['texturecache_2ecpp',['texturecache.cpp',['../texturecache_8cpp.html',1,'']]],
- ['texturecache_2eh',['texturecache.h',['../texturecache_8h.html',1,'']]],
- ['todolist_2edox',['todolist.dox',['../todolist_8dox.html',1,'']]]
+ ['shader_2ecpp',['shader.cpp',['../shader_8cpp.html',1,'']]],
+ ['shader_2eh',['shader.h',['../shader_8h.html',1,'']]],
+ ['shape_2eh',['shape.h',['../shape_8h.html',1,'']]],
+ ['sprite_2ecpp',['sprite.cpp',['../sprite_8cpp.html',1,'']]],
+ ['sprite_2eh',['sprite.h',['../sprite_8h.html',1,'']]],
+ ['spritebatch_2ecpp',['spritebatch.cpp',['../spritebatch_8cpp.html',1,'']]],
+ ['spritebatch_2eh',['spritebatch.h',['../spritebatch_8h.html',1,'']]],
+ ['spritesheet_2ecpp',['spritesheet.cpp',['../spritesheet_8cpp.html',1,'']]],
+ ['spritesheet_2eh',['spritesheet.h',['../spritesheet_8h.html',1,'']]],
+ ['stb_5fimage_2ecpp',['stb_image.cpp',['../stb__image_8cpp.html',1,'']]],
+ ['stb_5fimage_2eh',['stb_image.h',['../stb__image_8h.html',1,'']]],
+ ['syncqueue_2eh',['syncqueue.h',['../syncqueue_8h.html',1,'']]]
];
diff --git a/search/files_b.js b/search/files_b.js
index 1e9cc557..b27f863e 100644
--- a/search/files_b.js
+++ b/search/files_b.js
@@ -1,4 +1,7 @@
var searchData=
[
- ['vertex_2eh',['vertex.h',['../vertex_8h.html',1,'']]]
+ ['texture_2eh',['texture.h',['../texture_8h.html',1,'']]],
+ ['texturecache_2ecpp',['texturecache.cpp',['../texturecache_8cpp.html',1,'']]],
+ ['texturecache_2eh',['texturecache.h',['../texturecache_8h.html',1,'']]],
+ ['todolist_2edox',['todolist.dox',['../todolist_8dox.html',1,'']]]
];
diff --git a/search/files_c.js b/search/files_c.js
index d1ac949d..1e9cc557 100644
--- a/search/files_c.js
+++ b/search/files_c.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['window_2ecpp',['window.cpp',['../window_8cpp.html',1,'']]],
- ['window_2eh',['window.h',['../window_8h.html',1,'']]]
+ ['vertex_2eh',['vertex.h',['../vertex_8h.html',1,'']]]
];
diff --git a/search/files_d.js b/search/files_d.js
index 31f7c773..d1ac949d 100644
--- a/search/files_d.js
+++ b/search/files_d.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['yage_2ecpp',['yage.cpp',['../yage_8cpp.html',1,'']]],
- ['yage_2eh',['yage.h',['../yage_8h.html',1,'']]]
+ ['window_2ecpp',['window.cpp',['../window_8cpp.html',1,'']]],
+ ['window_2eh',['window.h',['../window_8h.html',1,'']]]
];
diff --git a/search/files_e.html b/search/files_e.html
new file mode 100644
index 00000000..2d919977
--- /dev/null
+++ b/search/files_e.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.6">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/files_e.js b/search/files_e.js
new file mode 100644
index 00000000..31f7c773
--- /dev/null
+++ b/search/files_e.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['yage_2ecpp',['yage.cpp',['../yage_8cpp.html',1,'']]],
+ ['yage_2eh',['yage.h',['../yage_8h.html',1,'']]]
+];
diff --git a/search/functions_0.js b/search/functions_0.js
index c58f4024..a92378b9 100644
--- a/search/functions_0.js
+++ b/search/functions_0.js
@@ -1,7 +1,6 @@
var searchData=
[
- ['active',['Active',['../classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd',1,'yage::Active::Active(const Active &amp;)=delete'],['../classyage_1_1Active.html#ad7b4b4cea1880d115dc5e3e1f80f404b',1,'yage::Active::Active()']]],
+ ['active',['Active',['../classyage_1_1Active.html#a7cd7344f0b8b7aa93ac0449e2fbbf7bd',1,'yage::Active']]],
['add',['add',['../classyage_1_1Logger.html#a5ec9a752e8cbb278342fdb49520fbcdd',1,'yage::Logger']]],
- ['addattribute',['addAttribute',['../classyage_1_1GlslProgram.html#a4e38b9f5daaf4b111b69e4d2900d4970',1,'yage::GlslProgram']]],
['applyforce',['applyForce',['../classyage_1_1Body.html#a56310be4f9d7d2d4e7f954af0e0a5878',1,'yage::Body::applyForce()'],['../classyage_1_1ParticleBody.html#a4d6c52fc2106ebd3f131d2be1fa3f11b',1,'yage::ParticleBody::applyForce()']]]
];
diff --git a/search/functions_1.js b/search/functions_1.js
index c67d5575..343773f8 100644
--- a/search/functions_1.js
+++ b/search/functions_1.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['begin',['begin',['../classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872',1,'yage::SpriteBatch::begin()'],['../classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055',1,'yage::Matrix::begin()']]],
- ['body',['Body',['../classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86',1,'yage::Body']]],
- ['bottom_5fleft',['bottom_left',['../classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1',1,'yage::Glyph']]],
- ['bottom_5fright',['bottom_right',['../classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2',1,'yage::Glyph']]]
+ ['begin',['begin',['../classyage_1_1Matrix.html#a83d77d3a40ced5e2b703a6d66b6e6055',1,'yage::Matrix::begin()'],['../classyage_1_1Batch.html#ab458f3129d2a329806dd00c6be77709d',1,'yage::Batch::begin()'],['../classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872',1,'yage::SpriteBatch::begin()']]],
+ ['body',['Body',['../classyage_1_1Body.html#aeca769807d9b6f6fb3c9f61deaa83b86',1,'yage::Body']]]
];
diff --git a/search/functions_10.js b/search/functions_10.js
index 5bb3af2a..ec3fcb05 100644
--- a/search/functions_10.js
+++ b/search/functions_10.js
@@ -1,12 +1,52 @@
var searchData=
[
- ['readfiletobuffer',['readFileToBuffer',['../classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d',1,'yage::IoManager']]],
- ['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969',1,'yage::RectangleCollider']]],
- ['remove',['remove',['../classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245',1,'yage::Logger']]],
- ['render',['render',['../classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d',1,'yage::SpriteBatch']]],
- ['renderbatch',['RenderBatch',['../classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853',1,'yage::RenderBatch']]],
- ['rigidbody',['RigidBody',['../classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606',1,'yage::RigidBody']]],
- ['row',['Row',['../classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06',1,'yage::details::Row']]],
- ['rowsize',['rowSize',['../classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1',1,'yage::Matrix']]],
- ['run',['run',['../classyage_1_1Active.html#aa9b25afe60999caaa6f261d1e79a351b',1,'yage::Active']]]
+ ['send',['send',['../classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326',1,'yage::Active']]],
+ ['setcolour',['setColour',['../structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf',1,'yage::Vertex']]],
+ ['setlevel',['setLevel',['../classyage_1_1Logger.html#a2ce5eb7eb1b108e38c1b90655999a8eb',1,'yage::Logger']]],
+ ['setposition',['setPosition',['../structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d',1,'yage::Vertex']]],
+ ['setuniform',['setUniform',['../classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215',1,'yage::Shader::setUniform(const std::string &amp;name, int value) const '],['../classyage_1_1Shader.html#a1a637a37d3e72fe1cd53602e80ab23ab',1,'yage::Shader::setUniform(const std::string &amp;name, float value) const '],['../classyage_1_1Shader.html#a96c50a15f45d064f43d1f01e84105e78',1,'yage::Shader::setUniform(const std::string &amp;name, const glm::mat4 &amp;matrix) const ']]],
+ ['setuv',['setUv',['../structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50',1,'yage::Vertex']]],
+ ['shader',['Shader',['../classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a',1,'yage::Shader::Shader(const std::string &amp;vertex_path, const std::string &amp;fragment_path)'],['../classyage_1_1Shader.html#a1a006dcb52a4fb9f1dc61df68d3676f5',1,'yage::Shader::Shader(const Shader &amp;)=delete'],['../classyage_1_1Shader.html#adf6dc3a526921d62b55a552f38958dd2',1,'yage::Shader::Shader(Shader &amp;&amp;)=delete']]],
+ ['shouldclose',['shouldClose',['../classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8',1,'yage::Window']]],
+ ['show',['show',['../classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34',1,'yage::Window']]],
+ ['sprite',['Sprite',['../classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987',1,'yage::Sprite::Sprite()=default'],['../classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e',1,'yage::Sprite::Sprite(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1',1,'yage::Sprite::Sprite(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0',1,'yage::SpriteSheet::sprite()']]],
+ ['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a',1,'yage::SpriteBatch::SpriteBatch()'],['../classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652',1,'yage::SpriteBatch::SpriteBatch(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e',1,'yage::SpriteBatch::SpriteBatch(SpriteBatch &amp;&amp;)=delete']]],
+ ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6',1,'yage::SpriteSheet']]],
+ ['stbi_5fconvert_5fiphone_5fpng_5fto_5frgb',['stbi_convert_iphone_png_to_rgb',['../stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b',1,'stb_image.h']]],
+ ['stbi_5ffailure_5freason',['stbi_failure_reason',['../stb__image_8h.html#aa874b3ba909f3281d499894909678336',1,'stb_image.h']]],
+ ['stbi_5fhdr_5fto_5fldr_5fgamma',['stbi_hdr_to_ldr_gamma',['../stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e',1,'stb_image.h']]],
+ ['stbi_5fhdr_5fto_5fldr_5fscale',['stbi_hdr_to_ldr_scale',['../stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258',1,'stb_image.h']]],
+ ['stbi_5fimage_5ffree',['stbi_image_free',['../stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb',1,'stb_image.h']]],
+ ['stbi_5finfo',['stbi_info',['../stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5fcallbacks',['stbi_info_from_callbacks',['../stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5ffile',['stbi_info_from_file',['../stb__image_8h.html#a28abedef4a0a93909332080df6be0021',1,'stb_image.h']]],
+ ['stbi_5finfo_5ffrom_5fmemory',['stbi_info_from_memory',['../stb__image_8h.html#acfef077febce3bc3f1f339de478f3315',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr',['stbi_is_hdr',['../stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5fcallbacks',['stbi_is_hdr_from_callbacks',['../stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5ffile',['stbi_is_hdr_from_file',['../stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524',1,'stb_image.h']]],
+ ['stbi_5fis_5fhdr_5ffrom_5fmemory',['stbi_is_hdr_from_memory',['../stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e',1,'stb_image.h']]],
+ ['stbi_5fldr_5fto_5fhdr_5fgamma',['stbi_ldr_to_hdr_gamma',['../stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb',1,'stb_image.h']]],
+ ['stbi_5fldr_5fto_5fhdr_5fscale',['stbi_ldr_to_hdr_scale',['../stb__image_8h.html#af946583656a362a316b40c0421c20561',1,'stb_image.h']]],
+ ['stbi_5fload',['stbi_load',['../stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048',1,'stb_image.h']]],
+ ['stbi_5fload_5f16',['stbi_load_16',['../stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee',1,'stb_image.h']]],
+ ['stbi_5fload_5f16_5ffrom_5fcallbacks',['stbi_load_16_from_callbacks',['../stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18',1,'stb_image.h']]],
+ ['stbi_5fload_5f16_5ffrom_5fmemory',['stbi_load_16_from_memory',['../stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5fcallbacks',['stbi_load_from_callbacks',['../stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5ffile',['stbi_load_from_file',['../stb__image_8h.html#aa9994764695597161e8f3776e97caa99',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5ffile_5f16',['stbi_load_from_file_16',['../stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c',1,'stb_image.h']]],
+ ['stbi_5fload_5ffrom_5fmemory',['stbi_load_from_memory',['../stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f',1,'stb_image.h']]],
+ ['stbi_5floadf',['stbi_loadf',['../stb__image_8h.html#af4f17acd30945a75901fdc022f90575f',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5fcallbacks',['stbi_loadf_from_callbacks',['../stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5ffile',['stbi_loadf_from_file',['../stb__image_8h.html#ace82446ecd7b5c760cde062179660f46',1,'stb_image.h']]],
+ ['stbi_5floadf_5ffrom_5fmemory',['stbi_loadf_from_memory',['../stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2',1,'stb_image.h']]],
+ ['stbi_5fset_5fflip_5fvertically_5fon_5fload',['stbi_set_flip_vertically_on_load',['../stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4',1,'stb_image.h']]],
+ ['stbi_5fset_5funpremultiply_5fon_5fload',['stbi_set_unpremultiply_on_load',['../stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fbuffer',['stbi_zlib_decode_buffer',['../stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc',['stbi_zlib_decode_malloc',['../stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc_5fguesssize',['stbi_zlib_decode_malloc_guesssize',['../stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fmalloc_5fguesssize_5fheaderflag',['stbi_zlib_decode_malloc_guesssize_headerflag',['../stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fnoheader_5fbuffer',['stbi_zlib_decode_noheader_buffer',['../stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e',1,'stb_image.h']]],
+ ['stbi_5fzlib_5fdecode_5fnoheader_5fmalloc',['stbi_zlib_decode_noheader_malloc',['../stb__image_8h.html#a7fbd65c83495f13f22469fe493775739',1,'stb_image.h']]],
+ ['swapbuffer',['swapBuffer',['../classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359',1,'yage::Window']]],
+ ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b',1,'yage::SyncQueue::SyncQueue()=default'],['../classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c',1,'yage::SyncQueue::SyncQueue(const SyncQueue &amp;)=delete']]]
];
diff --git a/search/functions_11.js b/search/functions_11.js
index a78a8f91..079484b3 100644
--- a/search/functions_11.js
+++ b/search/functions_11.js
@@ -1,15 +1,7 @@
var searchData=
[
- ['send',['send',['../classyage_1_1Active.html#a665673b94eb5ce7c448839e5bb6e0326',1,'yage::Active']]],
- ['setcolour',['setColour',['../structyage_1_1Vertex.html#aa759435739e34e2a0bfd1803c2aeeddf',1,'yage::Vertex']]],
- ['setposition',['setPosition',['../structyage_1_1Vertex.html#af392248f0be173221ebcc62d490fe03d',1,'yage::Vertex']]],
- ['setuv',['setUv',['../structyage_1_1Vertex.html#aa1fa8f5ebd883068828466cc924d4c50',1,'yage::Vertex']]],
- ['shouldclose',['shouldClose',['../classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8',1,'yage::Window']]],
- ['show',['show',['../classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34',1,'yage::Window']]],
- ['sortglyphs',['sortGlyphs',['../classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a',1,'yage::SpriteBatch']]],
- ['sprite',['Sprite',['../classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987',1,'yage::Sprite::Sprite()=default'],['../classyage_1_1Sprite.html#aa5a7958e17f1d042226b91fb1829642e',1,'yage::Sprite::Sprite(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a33789b3e37bfcb84ed89ec69f47817a1',1,'yage::Sprite::Sprite(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0',1,'yage::SpriteSheet::sprite()']]],
- ['spritebatch',['SpriteBatch',['../classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a',1,'yage::SpriteBatch::SpriteBatch()'],['../classyage_1_1SpriteBatch.html#a30a46a7182235a739916d540781af652',1,'yage::SpriteBatch::SpriteBatch(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a7f18a506f4188acd2219da8147dc0e1e',1,'yage::SpriteBatch::SpriteBatch(SpriteBatch &amp;&amp;)=delete']]],
- ['spritesheet',['SpriteSheet',['../classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6',1,'yage::SpriteSheet']]],
- ['swapbuffer',['swapBuffer',['../classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359',1,'yage::Window']]],
- ['syncqueue',['SyncQueue',['../classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b',1,'yage::SyncQueue::SyncQueue()=default'],['../classyage_1_1SyncQueue.html#a8f42b9b34c6495680aade2563cc2359c',1,'yage::SyncQueue::SyncQueue(const SyncQueue &amp;)=delete']]]
+ ['texture',['Texture',['../structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5',1,'yage::Texture::Texture()'],['../structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850',1,'yage::Texture::Texture(GLuint id_i, int width_i, int height_i, int x_i=1, int y_i=1)']]],
+ ['texturecache',['TextureCache',['../classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692',1,'yage::TextureCache']]],
+ ['tostring',['toString',['../classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8',1,'yage::Matrix::toString()'],['../classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae',1,'yage::Vector::toString()']]],
+ ['transpose',['transpose',['../namespaceyage_1_1matrix.html#a62de4b4b6bab23717d957c370f2e41c7',1,'yage::matrix']]]
];
diff --git a/search/functions_12.js b/search/functions_12.js
index 3add950b..dc91ba1d 100644
--- a/search/functions_12.js
+++ b/search/functions_12.js
@@ -1,9 +1,6 @@
var searchData=
[
- ['texture',['Texture',['../structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5',1,'yage::Texture::Texture()'],['../structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c',1,'yage::Texture::Texture(GLuint id_i, int width_i, int height_i)'],['../classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2',1,'yage::Glyph::texture()'],['../classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d',1,'yage::RenderBatch::texture()']]],
- ['texturecache',['TextureCache',['../classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692',1,'yage::TextureCache']]],
- ['top_5fleft',['top_left',['../classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f',1,'yage::Glyph']]],
- ['top_5fright',['top_right',['../classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec',1,'yage::Glyph']]],
- ['tostring',['toString',['../classyage_1_1Matrix.html#a07678d7007e89487c7168df84f2a4fa8',1,'yage::Matrix::toString()'],['../classyage_1_1Vector.html#a956f7b6d02c0309adece311f59c8beae',1,'yage::Vector::toString()']]],
- ['transpose',['transpose',['../namespaceyage_1_1matrix.html#a62de4b4b6bab23717d957c370f2e41c7',1,'yage::matrix']]]
+ ['update',['update',['../classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c',1,'yage::Camera::update()'],['../classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36',1,'yage::Body::update()'],['../classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c',1,'yage::ParticleBody::update()']]],
+ ['use',['use',['../classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c',1,'yage::Shader']]],
+ ['uv',['UV',['../structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde',1,'yage::UV::UV()=default'],['../structyage_1_1UV.html#ac918524789292937aae5803df3c2673f',1,'yage::UV::UV(float u_, float v_)']]]
];
diff --git a/search/functions_13.js b/search/functions_13.js
index 4c2c743f..6047403c 100644
--- a/search/functions_13.js
+++ b/search/functions_13.js
@@ -1,7 +1,8 @@
var searchData=
[
- ['unuse',['unuse',['../classyage_1_1GlslProgram.html#a2afa98cbf5d25b634e01b863c33fcf8f',1,'yage::GlslProgram']]],
- ['update',['update',['../classyage_1_1Camera.html#af6239cd6ad44fcdcc12d7b183c8a0f86',1,'yage::Camera::update()'],['../classyage_1_1Body.html#a17017d183f3f9ecdff779fd6f82c5d36',1,'yage::Body::update()'],['../classyage_1_1ParticleBody.html#a1f24ef00fd59254397d677d90936ec4c',1,'yage::ParticleBody::update()']]],
- ['use',['use',['../classyage_1_1GlslProgram.html#a762b44540ef219ff39f784543fc162c3',1,'yage::GlslProgram']]],
- ['uv',['UV',['../structyage_1_1UV.html#ae236139f3a5f6024aac1e21bd93b7bde',1,'yage::UV::UV()=default'],['../structyage_1_1UV.html#ac918524789292937aae5803df3c2673f',1,'yage::UV::UV(float u_, float v_)']]]
+ ['vector',['Vector',['../classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa',1,'yage::Vector::Vector()'],['../classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f',1,'yage::Vector::Vector(const Matrix&lt; Rows, 1, Type &gt; &amp;other)'],['../classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d',1,'yage::Vector::Vector(const std::vector&lt; Type &gt; &amp;data)']]],
+ ['vector2',['Vector2',['../classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea',1,'yage::Vector2::Vector2()'],['../classyage_1_1Vector2.html#af69d534302a406bac419589e0a2f2917',1,'yage::Vector2::Vector2(const std::vector&lt; Type &gt; &amp;data)'],['../classyage_1_1Vector2.html#a3ef3bc2954f387f1db2165a884765ad0',1,'yage::Vector2::Vector2(Type x, Type y)'],['../classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822',1,'yage::Vector2::Vector2(const Matrix&lt; 2, 1, Type &gt; &amp;other)']]],
+ ['vector3',['Vector3',['../classyage_1_1Vector3.html#a745b76ba3e49f5c73f53cb065ddf337b',1,'yage::Vector3::Vector3()'],['../classyage_1_1Vector3.html#ad30c9989f25ef241c59a6c59661daf3a',1,'yage::Vector3::Vector3(std::vector&lt; Type &gt; data)'],['../classyage_1_1Vector3.html#a36744e7ef6c50b117e4105f1752c93c0',1,'yage::Vector3::Vector3(Type x_in, Type y_in, Type z_in)']]],
+ ['vector4',['Vector4',['../classyage_1_1Vector4.html#ab6e8f6e88c13d3bbfa1a6591d97b7d03',1,'yage::Vector4::Vector4()'],['../classyage_1_1Vector4.html#ae40311bf406263427426a7de5108c6c1',1,'yage::Vector4::Vector4(std::vector&lt; Type &gt; data)'],['../classyage_1_1Vector4.html#a36537a95ca1764334fe9b9b1f001206d',1,'yage::Vector4::Vector4(Type x_in, Type y_in, Type z_in, Type w_in)']]],
+ ['vertex',['Vertex',['../structyage_1_1Vertex.html#acae9697c2762e37dfa4472b85fa112c3',1,'yage::Vertex::Vertex()=default'],['../structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e',1,'yage::Vertex::Vertex(const Position &amp;position_, const Colour &amp;colour_, const UV &amp;uv_)']]]
];
diff --git a/search/functions_14.js b/search/functions_14.js
index 6047403c..b7f7c693 100644
--- a/search/functions_14.js
+++ b/search/functions_14.js
@@ -1,8 +1,6 @@
var searchData=
[
- ['vector',['Vector',['../classyage_1_1Vector.html#ac9b202913c03bde201e350e855fbbffa',1,'yage::Vector::Vector()'],['../classyage_1_1Vector.html#a55fd6c60a95832ad4b68083071f9866f',1,'yage::Vector::Vector(const Matrix&lt; Rows, 1, Type &gt; &amp;other)'],['../classyage_1_1Vector.html#aa291a8ee264f81165b529b7f3a0c265d',1,'yage::Vector::Vector(const std::vector&lt; Type &gt; &amp;data)']]],
- ['vector2',['Vector2',['../classyage_1_1Vector2.html#a50c108903be424de1c41ce31fddd23ea',1,'yage::Vector2::Vector2()'],['../classyage_1_1Vector2.html#af69d534302a406bac419589e0a2f2917',1,'yage::Vector2::Vector2(const std::vector&lt; Type &gt; &amp;data)'],['../classyage_1_1Vector2.html#a3ef3bc2954f387f1db2165a884765ad0',1,'yage::Vector2::Vector2(Type x, Type y)'],['../classyage_1_1Vector2.html#aacee766d18741a925a47b91fa0080822',1,'yage::Vector2::Vector2(const Matrix&lt; 2, 1, Type &gt; &amp;other)']]],
- ['vector3',['Vector3',['../classyage_1_1Vector3.html#a745b76ba3e49f5c73f53cb065ddf337b',1,'yage::Vector3::Vector3()'],['../classyage_1_1Vector3.html#ad30c9989f25ef241c59a6c59661daf3a',1,'yage::Vector3::Vector3(std::vector&lt; Type &gt; data)'],['../classyage_1_1Vector3.html#a36744e7ef6c50b117e4105f1752c93c0',1,'yage::Vector3::Vector3(Type x_in, Type y_in, Type z_in)']]],
- ['vector4',['Vector4',['../classyage_1_1Vector4.html#ab6e8f6e88c13d3bbfa1a6591d97b7d03',1,'yage::Vector4::Vector4()'],['../classyage_1_1Vector4.html#ae40311bf406263427426a7de5108c6c1',1,'yage::Vector4::Vector4(std::vector&lt; Type &gt; data)'],['../classyage_1_1Vector4.html#a36537a95ca1764334fe9b9b1f001206d',1,'yage::Vector4::Vector4(Type x_in, Type y_in, Type z_in, Type w_in)']]],
- ['vertex',['Vertex',['../structyage_1_1Vertex.html#acae9697c2762e37dfa4472b85fa112c3',1,'yage::Vertex::Vertex()=default'],['../structyage_1_1Vertex.html#aac3046359c44aeabc910a81f4f41789e',1,'yage::Vertex::Vertex(const Position &amp;position_, const Colour &amp;colour_, const UV &amp;uv_)']]]
+ ['w',['w',['../classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d',1,'yage::Vector4']]],
+ ['window',['Window',['../classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e',1,'yage::Window::Window()'],['../classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf',1,'yage::Window::Window(const Window &amp;)=delete'],['../classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821',1,'yage::Window::Window(Window &amp;&amp;)=delete']]],
+ ['write',['write',['../classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d',1,'yage::LogSink']]]
];
diff --git a/search/functions_15.js b/search/functions_15.js
index 6f8433b8..151e9779 100644
--- a/search/functions_15.js
+++ b/search/functions_15.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['w',['w',['../classyage_1_1Vector4.html#a111ecbf09543e8fafaf3aedef77d168d',1,'yage::Vector4']]],
- ['window',['Window',['../classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e',1,'yage::Window::Window()'],['../classyage_1_1Window.html#a1225a2b5eff6d44a6bce3f0f5f10e2bf',1,'yage::Window::Window(const Window &amp;)=delete'],['../classyage_1_1Window.html#a4be115daea6c7473fca81623c547d821',1,'yage::Window::Window(Window &amp;&amp;)=delete']]],
- ['write',['write',['../classyage_1_1LogSink.html#ac41716cf03dac6311cb7287c9edf8a8d',1,'yage::LogSink::write()'],['../structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac',1,'yage::LogSink::Concept::write()'],['../structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224',1,'yage::LogSink::Model::write()']]]
+ ['x',['x',['../classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf',1,'yage::Vector2::x()'],['../classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740',1,'yage::Vector2::x() const '],['../classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c',1,'yage::Vector4::x()']]],
+ ['xposition',['xPosition',['../classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225',1,'yage::Body']]]
];
diff --git a/search/functions_16.js b/search/functions_16.js
index 151e9779..b57eae4a 100644
--- a/search/functions_16.js
+++ b/search/functions_16.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['x',['x',['../classyage_1_1Vector2.html#a5a777413b63e68dc5f797d31e3d7beaf',1,'yage::Vector2::x()'],['../classyage_1_1Vector2.html#a14a436185842f7375d02b57a37832740',1,'yage::Vector2::x() const '],['../classyage_1_1Vector3.html#ae91b009b2e5e81163ebf80bf5bcbe7f0',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#ad6d84a870f51573b60490591cdbd8b4c',1,'yage::Vector4::x()']]],
- ['xposition',['xPosition',['../classyage_1_1Body.html#a8a800cef0fb3561332d4a97c790e7225',1,'yage::Body']]]
+ ['y',['y',['../classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2',1,'yage::Vector2::y()'],['../classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456',1,'yage::Vector2::y() const '],['../classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c',1,'yage::Vector4::y()']]],
+ ['yposition',['yPosition',['../classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364',1,'yage::Body']]]
];
diff --git a/search/functions_17.js b/search/functions_17.js
index b57eae4a..b786432a 100644
--- a/search/functions_17.js
+++ b/search/functions_17.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['y',['y',['../classyage_1_1Vector2.html#a554645b415a76af47698985b7757f0c2',1,'yage::Vector2::y()'],['../classyage_1_1Vector2.html#a216ac57d39572b46ab8307a7728e4456',1,'yage::Vector2::y() const '],['../classyage_1_1Vector3.html#a9b984c33ac0a7d7ade6963baea0e5ee8',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#a0c7bf86ba48c9bda10e0605441bb8c3c',1,'yage::Vector4::y()']]],
- ['yposition',['yPosition',['../classyage_1_1Body.html#a1023ebd31914571f137fb5aadc88c364',1,'yage::Body']]]
+ ['z',['z',['../classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583',1,'yage::Vector4::z()']]],
+ ['zoom',['zoom',['../classyage_1_1Camera.html#a8b50af04dae6eca905c5008ef93b72d0',1,'yage::Camera']]]
];
diff --git a/search/functions_18.js b/search/functions_18.js
index 4e474b94..4a39058c 100644
--- a/search/functions_18.js
+++ b/search/functions_18.js
@@ -1,4 +1,10 @@
var searchData=
[
- ['z',['z',['../classyage_1_1Vector3.html#ad8efd76556fe2ff568f81ce1d4dd1888',1,'yage::Vector3::z()'],['../classyage_1_1Vector4.html#aad3540315f15d69a84aa4573d3e1c583',1,'yage::Vector4::z()']]]
+ ['_7eactive',['~Active',['../classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2',1,'yage::Active']]],
+ ['_7ecollisionbody',['~CollisionBody',['../classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b',1,'yage::CollisionBody']]],
+ ['_7elogmessage',['~LogMessage',['../classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca',1,'yage::LogMessage']]],
+ ['_7eshader',['~Shader',['../classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd',1,'yage::Shader']]],
+ ['_7esprite',['~Sprite',['../classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2',1,'yage::Sprite']]],
+ ['_7espritebatch',['~SpriteBatch',['../classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a',1,'yage::SpriteBatch']]],
+ ['_7ewindow',['~Window',['../classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0',1,'yage::Window']]]
];
diff --git a/search/functions_19.js b/search/functions_19.js
deleted file mode 100644
index 8d81ff33..00000000
--- a/search/functions_19.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var searchData=
-[
- ['_7eactive',['~Active',['../classyage_1_1Active.html#ab69d08cf4804b59ac9db283015e749f2',1,'yage::Active']]],
- ['_7ecollisionbody',['~CollisionBody',['../classyage_1_1CollisionBody.html#a758b2f867f276f4c7e02ebda2cd04c8b',1,'yage::CollisionBody']]],
- ['_7econcept',['~Concept',['../structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1',1,'yage::LogSink::Concept']]],
- ['_7eglslprogram',['~GlslProgram',['../classyage_1_1GlslProgram.html#a45676c850afad2717fd4119eb8c02ef7',1,'yage::GlslProgram']]],
- ['_7elogmessage',['~LogMessage',['../classyage_1_1LogMessage.html#af82ed7ceef5cfdac54ad2e176deb9fca',1,'yage::LogMessage']]],
- ['_7esprite',['~Sprite',['../classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2',1,'yage::Sprite']]],
- ['_7espritebatch',['~SpriteBatch',['../classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a',1,'yage::SpriteBatch']]],
- ['_7ewindow',['~Window',['../classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0',1,'yage::Window']]]
-];
diff --git a/search/functions_2.js b/search/functions_2.js
index ab8242d9..e1f09b78 100644
--- a/search/functions_2.js
+++ b/search/functions_2.js
@@ -3,18 +3,11 @@ var searchData=
['camera',['Camera',['../classyage_1_1Camera.html#a13be1e50638977d62cff9ffba1213611',1,'yage::Camera']]],
['clear',['clear',['../classyage_1_1Logger.html#a036fcbfcb9d3428931ec5a11237501a8',1,'yage::Logger']]],
['clearbuffer',['clearBuffer',['../classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58',1,'yage::Window']]],
- ['clone',['clone',['../structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d',1,'yage::LogSink::Concept::clone()'],['../structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf',1,'yage::LogSink::Model::clone()']]],
['collider',['Collider',['../classyage_1_1Collider.html#ae33aeb0711409e7c3ef9e21ed99fa8a3',1,'yage::Collider']]],
['collides',['collides',['../classyage_1_1Collider.html#abbab9373c0805ffa5215c08b82eaed03',1,'yage::Collider::collides()'],['../classyage_1_1RectangleCollider.html#a81e825cf009a437bc0f61b846cac66f6',1,'yage::RectangleCollider::collides()']]],
['collisionbody',['CollisionBody',['../classyage_1_1CollisionBody.html#a5289e613269facc45cd451872c17a83d',1,'yage::CollisionBody']]],
['colour',['Colour',['../structyage_1_1Colour.html#a585165d5109c81b6b2de6f1116406abd',1,'yage::Colour::Colour()'],['../structyage_1_1Colour.html#a8118ad802db7e61df770f7d3b5b88aaa',1,'yage::Colour::Colour(GLubyte r_, GLubyte g_, GLubyte b_, GLubyte a_)']]],
['colsize',['colSize',['../classyage_1_1Matrix.html#a2148cd52008892765ad90250c68afba1',1,'yage::Matrix']]],
- ['compileshader',['compileShader',['../classyage_1_1GlslProgram.html#a7f566bb89d01dbdeea4e034b36bf7cd4',1,'yage::GlslProgram']]],
- ['compileshaderfromfile',['compileShaderFromFile',['../classyage_1_1GlslProgram.html#a07a4484f76091689c35a8f7617b7c2e6',1,'yage::GlslProgram']]],
- ['compileshaders',['compileShaders',['../classyage_1_1GlslProgram.html#aa97d015c12b29a4ccf5f3fe75a33db5c',1,'yage::GlslProgram']]],
- ['compileshadersfromfile',['compileShadersFromFile',['../classyage_1_1GlslProgram.html#aff700034b2742769a0869944948dc430',1,'yage::GlslProgram']]],
['coordinate',['Coordinate',['../structyage_1_1details_1_1Coordinate.html#a0b3a6d9aa1d5b846ad7ebc11bc77c629',1,'yage::details::Coordinate::Coordinate()=default'],['../structyage_1_1details_1_1Coordinate.html#a43fb6bd3e325d5cd7ec436778605db2a',1,'yage::details::Coordinate::Coordinate(int x_i, int y_i, int width_i, int height_i)']]],
- ['create',['create',['../classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745',1,'yage::Window::create()'],['../classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064',1,'yage::Active::create()']]],
- ['createrenderbatches',['createRenderBatches',['../classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c',1,'yage::SpriteBatch']]],
- ['createvertexarray',['createVertexArray',['../classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027',1,'yage::SpriteBatch']]]
+ ['create',['create',['../classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745',1,'yage::Window::create()'],['../classyage_1_1Active.html#aa2ed414bbe94fdd51c8aeb7ada73a064',1,'yage::Active::create()']]]
];
diff --git a/search/functions_3.js b/search/functions_3.js
index aa2284e0..d93056b0 100644
--- a/search/functions_3.js
+++ b/search/functions_3.js
@@ -1,8 +1,5 @@
var searchData=
[
- ['decodepng',['decodePNG',['../namespaceyage.html#a0cf122e98752ed702393cbe30df51356',1,'yage']]],
- ['defaultsetup',['defaultSetup',['../classyage_1_1GlslProgram.html#a1260a2302c1434ce38c850dc18cbc04e',1,'yage::GlslProgram']]],
- ['depth',['depth',['../classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9',1,'yage::Glyph']]],
['dot',['dot',['../namespaceyage_1_1matrix.html#ac4d2f55a5c3369ec42001776a582c30a',1,'yage::matrix']]],
- ['draw',['draw',['../classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40',1,'yage::Sprite::draw()'],['../classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941',1,'yage::SpriteBatch::draw()']]]
+ ['draw',['draw',['../classyage_1_1Drawable.html#abee95e68b5bffef86a35dafca296c45e',1,'yage::Drawable::draw()'],['../classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40',1,'yage::Sprite::draw()'],['../classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0',1,'yage::SpriteBatch::draw()']]]
];
diff --git a/search/functions_4.js b/search/functions_4.js
index 2b3bdd7d..10b10be0 100644
--- a/search/functions_4.js
+++ b/search/functions_4.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['end',['end',['../classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632',1,'yage::SpriteBatch::end()'],['../classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851',1,'yage::Matrix::end()']]]
+ ['end',['end',['../classyage_1_1Matrix.html#a20ea5fe16d27ef15f775b5497cadc851',1,'yage::Matrix::end()'],['../classyage_1_1Batch.html#a322b0fe531c9cfa506d6d2dd786a236e',1,'yage::Batch::end()'],['../classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632',1,'yage::SpriteBatch::end()']]]
];
diff --git a/search/functions_6.js b/search/functions_6.js
index d2019cff..3fea5334 100644
--- a/search/functions_6.js
+++ b/search/functions_6.js
@@ -2,10 +2,8 @@ var searchData=
[
['getcol',['getCol',['../classyage_1_1Matrix.html#a74475218328d6ef69701a6e261df925b',1,'yage::Matrix']]],
['getrow',['getRow',['../classyage_1_1Matrix.html#a960273d1ac46a8edb71ceee08ee639b8',1,'yage::Matrix']]],
- ['gettexture',['getTexture',['../classyage_1_1ResourceManager.html#a36d805924374f27aa7dbce1d47795b25',1,'yage::ResourceManager::getTexture()'],['../classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e',1,'yage::TextureCache::getTexture()']]],
+ ['gettexture',['getTexture',['../classyage_1_1ResourceManager.html#aec533f266d9b432050faed301f4191dc',1,'yage::ResourceManager::getTexture()'],['../classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f',1,'yage::TextureCache::getTexture()']]],
['gettexturefromspritesheet',['getTextureFromSpriteSheet',['../classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd',1,'yage::TextureCache']]],
- ['getuniformlocation',['getUniformLocation',['../classyage_1_1GlslProgram.html#a255ccbb1d94d17f2de62319efd4be91d',1,'yage::GlslProgram']]],
['glfwerrorcallback',['glfwErrorCallback',['../namespaceyage.html#a0bd2fedcbe862fdea1ea54b6b7d49bec',1,'yage']]],
- ['glslprogram',['GlslProgram',['../classyage_1_1GlslProgram.html#a721b43cbdf82dbf68b3a4f3304a135c4',1,'yage::GlslProgram::GlslProgram()=default'],['../classyage_1_1GlslProgram.html#a78268f78af00bcb2358d48bb010aa9fd',1,'yage::GlslProgram::GlslProgram(const GlslProgram &amp;)=delete'],['../classyage_1_1GlslProgram.html#af2cea717928baf5feed2ac5dc2a03290',1,'yage::GlslProgram::GlslProgram(GlslProgram &amp;&amp;)=delete']]],
- ['glyph',['Glyph',['../classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f',1,'yage::Glyph']]]
+ ['glyph',['Glyph',['../structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c',1,'yage::details::Glyph']]]
];
diff --git a/search/functions_8.js b/search/functions_8.js
index 69b8bbe4..507861e5 100644
--- a/search/functions_8.js
+++ b/search/functions_8.js
@@ -1,7 +1,6 @@
var searchData=
[
- ['init',['init',['../classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1',1,'yage::Sprite::init()'],['../namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce',1,'yage::init()']]],
- ['initshaderid',['initShaderId',['../classyage_1_1GlslProgram.html#a43838529286cfc954ef2db3229274dd9',1,'yage::GlslProgram']]],
+ ['init',['init',['../classyage_1_1Batch.html#a0040228902f0a4cca90da23f36a7c477',1,'yage::Batch::init()'],['../classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1',1,'yage::Sprite::init()'],['../namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce',1,'yage::init()']]],
['inside',['inside',['../classyage_1_1Collider.html#a4a8ad9e664a0015e023a70d196302fe9',1,'yage::Collider::inside()'],['../classyage_1_1RectangleCollider.html#ac8d8e6bdb12c21be12f7d398242147c4',1,'yage::RectangleCollider::inside()']]],
['instance',['instance',['../classyage_1_1Logger.html#ad165738c5b738d80a14b0ee1319cae2e',1,'yage::Logger']]]
];
diff --git a/search/functions_9.js b/search/functions_9.js
index 94ff16fe..8a7ecee3 100644
--- a/search/functions_9.js
+++ b/search/functions_9.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['key_5fcallback',['key_callback',['../namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec',1,'yage']]]
+ ['keypressed',['keyPressed',['../classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006',1,'yage::Window']]]
];
diff --git a/search/functions_a.js b/search/functions_a.js
index aae6ccba..f842904b 100644
--- a/search/functions_a.js
+++ b/search/functions_a.js
@@ -1,9 +1,7 @@
var searchData=
[
- ['linkshaders',['linkShaders',['../classyage_1_1GlslProgram.html#aed74ec6db4d2b02e1172bd5694eb1b27',1,'yage::GlslProgram']]],
['loadpng',['loadPng',['../classyage_1_1ImageLoader.html#ad8dcdaaed43713f07723f2b6719d1b32',1,'yage::ImageLoader']]],
- ['logger',['Logger',['../classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64',1,'yage::Logger']]],
- ['loglevel',['LogLevel',['../classLogLevel.html#ae9961bbc0dfc8f5cce5889f39e1d47ec',1,'LogLevel']]],
- ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be',1,'yage::LogMessage::LogMessage(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#a9c6df412c175708a17be412fa8d6644f',1,'yage::LogMessage::LogMessage(Logger *owner, const std::string &amp;fileName_i, int lineNum_i)'],['../classyage_1_1LogMessage.html#a2ad7f4e8ddfea01ab99d09ac74f8d4d0',1,'yage::LogMessage::LogMessage(LogMessage &amp;&amp;msg)']]],
+ ['logger',['Logger',['../classyage_1_1Logger.html#a950c0c75b86bf330cf11a0ad29bd9a64',1,'yage::Logger::Logger()'],['../classyage_1_1Logger.html#a3d54590303257e9a8d1da26d59571352',1,'yage::Logger::Logger(const std::string &amp;file_path)'],['../classyage_1_1Logger.html#a71f6ab0fa1e86d790553c0763a255b2b',1,'yage::Logger::Logger(LogLevel min_level)'],['../classyage_1_1Logger.html#acbd21a2da8b423e9f606c386cabac074',1,'yage::Logger::Logger(LogLevel min_level, const std::string &amp;file_path)']]],
+ ['logmessage',['LogMessage',['../classyage_1_1LogMessage.html#af4ab2630201ecd155c329fbfebe352be',1,'yage::LogMessage']]],
['logsink',['LogSink',['../classyage_1_1LogSink.html#ab7b70959364771b105c0dffa0b64c38e',1,'yage::LogSink::LogSink(T impl)'],['../classyage_1_1LogSink.html#a8583ac57ebff98ab38c613c03b5bfbba',1,'yage::LogSink::LogSink(const LogSink &amp;sink)'],['../classyage_1_1LogSink.html#aadebaf552b839879189965faf7b504cf',1,'yage::LogSink::LogSink(LogSink &amp;&amp;sink)']]]
];
diff --git a/search/functions_b.js b/search/functions_b.js
index d8396297..43be41e3 100644
--- a/search/functions_b.js
+++ b/search/functions_b.js
@@ -3,7 +3,6 @@ var searchData=
['makeconsolesink',['makeConsoleSink',['../namespaceyage.html#ab54350a8dbf59338c99ab4f43cfa2858',1,'yage']]],
['makefilesink',['makeFileSink',['../namespaceyage.html#ad537beeea51c8314e407fadd24affc34',1,'yage::makeFileSink(const std::string &amp;filename)'],['../namespaceyage.html#a6b288197f6a97f197dda60e5b54f1841',1,'yage::makeFileSink(std::string &amp;&amp;filename)']]],
['matrix',['Matrix',['../classyage_1_1Matrix.html#a73b7d1f94f4f72a2294b71b3a35794ad',1,'yage::Matrix::Matrix()'],['../classyage_1_1Matrix.html#a191b02ff353d04f18779d4c84e20927b',1,'yage::Matrix::Matrix(const std::vector&lt; Type &gt; &amp;data)']]],
- ['model',['Model',['../structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9',1,'yage::LogSink::Model']]],
['move',['move',['../classyage_1_1Camera.html#a012820185cceb451926bc4ef1607b324',1,'yage::Camera']]],
['multiply',['multiply',['../namespaceyage_1_1matrix.html#a277125ad9fa06a7119c59d350e129985',1,'yage::matrix']]]
];
diff --git a/search/functions_c.js b/search/functions_c.js
index 20a4697a..88cc146b 100644
--- a/search/functions_c.js
+++ b/search/functions_c.js
@@ -1,4 +1,14 @@
var searchData=
[
- ['num_5fvertices',['num_vertices',['../classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e',1,'yage::RenderBatch']]]
+ ['operator_28_29',['operator()',['../classyage_1_1Logger.html#a3c7d6d1a9ccf0397dc81350cef6782f2',1,'yage::Logger']]],
+ ['operator_2a',['operator*',['../namespaceyage.html#ad8903f6a93ac89f16846458540717507',1,'yage::operator*(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a090cbd6b767b583364e9cbe78d8a8d5a',1,'yage::operator*(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
+ ['operator_2b',['operator+',['../namespaceyage.html#a226cc29763f745fd175844f4263d5dae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)'],['../namespaceyage.html#a6b77afaa1cd077df90b9daccbfc2cbae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a947133b8fc764d9fc5c5d8b08821cf32',1,'yage::operator+(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
+ ['operator_2b_3d',['operator+=',['../classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228',1,'yage::Matrix']]],
+ ['operator_2d',['operator-',['../namespaceyage.html#a2187fb11298a029f2877702192717090',1,'yage::operator-(Matrix&lt; M, N, T &gt; lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)'],['../namespaceyage.html#a8a9db24697f649f6d19f0347330d95fe',1,'yage::operator-(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#ad9344d41af72f29cd6f8cf1ef62ed3cc',1,'yage::operator-(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
+ ['operator_2d_3d',['operator-=',['../classyage_1_1Matrix.html#acc2d0763f060c923ce53b37143d0a7bb',1,'yage::Matrix']]],
+ ['operator_2f',['operator/',['../namespaceyage.html#acca4a23afb94173695bbc1e1f2cde2b3',1,'yage']]],
+ ['operator_3c_3c',['operator&lt;&lt;',['../classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90',1,'yage::LogMessage::operator&lt;&lt;(const T &amp;value)'],['../classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab',1,'yage::LogMessage::operator&lt;&lt;(std::ostream &amp;(*fn)(std::ostream &amp;os))'],['../namespaceyage.html#a7ed614bc9d3e8b9f3f8d32b6a7ff28eb',1,'yage::operator&lt;&lt;()']]],
+ ['operator_3d',['operator=',['../classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae',1,'yage::LogMessage::operator=(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da',1,'yage::LogMessage::operator=(LogMessage &amp;&amp;msg)=delete'],['../classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc',1,'yage::LogSink::operator=(const LogSink &amp;sink)'],['../classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356',1,'yage::LogSink::operator=(LogSink &amp;&amp;sink)'],['../classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db',1,'yage::Window::operator=(const Window &amp;)=delete'],['../classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de',1,'yage::Window::operator=(Window &amp;&amp;)=delete'],['../classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a',1,'yage::Shader::operator=(const Shader &amp;)=delete'],['../classyage_1_1Shader.html#af94e7c75abb18015ade6126465a5fe05',1,'yage::Shader::operator=(Shader &amp;&amp;)=delete'],['../classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee',1,'yage::Sprite::operator=(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897',1,'yage::Sprite::operator=(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737',1,'yage::SpriteBatch::operator=(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f',1,'yage::SpriteBatch::operator=(SpriteBatch &amp;&amp;)=delete'],['../classyage_1_1Active.html#add837044e73e4bc9849f09495535600c',1,'yage::Active::operator=()'],['../classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6',1,'yage::SyncQueue::operator=()']]],
+ ['operator_3d_3d',['operator==',['../classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9',1,'yage::LogSink::operator==()'],['../namespaceyage.html#a5ddd829cb1c7c4c880d0fd53326858fe',1,'yage::operator==()']]],
+ ['operator_5b_5d',['operator[]',['../classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190',1,'yage::details::Row::operator[](int col)'],['../classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736',1,'yage::details::Row::operator[](int col) const '],['../classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145',1,'yage::Matrix::operator[](int row)'],['../classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6',1,'yage::Matrix::operator[](int row) const '],['../classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2',1,'yage::Vector::operator[](int col)'],['../classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35',1,'yage::Vector::operator[](int col) const ']]]
];
diff --git a/search/functions_d.js b/search/functions_d.js
index 0aae37c9..914f95eb 100644
--- a/search/functions_d.js
+++ b/search/functions_d.js
@@ -1,15 +1,8 @@
var searchData=
[
- ['offset',['offset',['../classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944',1,'yage::RenderBatch']]],
- ['operator_28_29',['operator()',['../classyage_1_1Logger.html#a541278f8908daecb8d56d6da0a5642b6',1,'yage::Logger']]],
- ['operator_2a',['operator*',['../namespaceyage.html#ad8903f6a93ac89f16846458540717507',1,'yage::operator*(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a090cbd6b767b583364e9cbe78d8a8d5a',1,'yage::operator*(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
- ['operator_2b',['operator+',['../namespaceyage.html#a226cc29763f745fd175844f4263d5dae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)'],['../namespaceyage.html#a6b77afaa1cd077df90b9daccbfc2cbae',1,'yage::operator+(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#a947133b8fc764d9fc5c5d8b08821cf32',1,'yage::operator+(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
- ['operator_2b_3d',['operator+=',['../classyage_1_1Matrix.html#a8b7e0913efdb5e8c9ff39df4c4f36228',1,'yage::Matrix']]],
- ['operator_2d',['operator-',['../namespaceyage.html#a2187fb11298a029f2877702192717090',1,'yage::operator-(Matrix&lt; M, N, T &gt; lhs, const Matrix&lt; M, N, T &gt; &amp;rhs)'],['../namespaceyage.html#a8a9db24697f649f6d19f0347330d95fe',1,'yage::operator-(Matrix&lt; M, N, T &gt; lhs, const T &amp;rhs)'],['../namespaceyage.html#ad9344d41af72f29cd6f8cf1ef62ed3cc',1,'yage::operator-(const T &amp;lhs, Matrix&lt; M, N, T &gt; rhs)']]],
- ['operator_2d_3d',['operator-=',['../classyage_1_1Matrix.html#acc2d0763f060c923ce53b37143d0a7bb',1,'yage::Matrix']]],
- ['operator_2f',['operator/',['../namespaceyage.html#acca4a23afb94173695bbc1e1f2cde2b3',1,'yage']]],
- ['operator_3c_3c',['operator&lt;&lt;',['../classyage_1_1LogMessage.html#af79ecd529e839a5a3e99077dde60df90',1,'yage::LogMessage::operator&lt;&lt;(const T &amp;value)'],['../classyage_1_1LogMessage.html#a855e0e72055f785def530feaf27cbeab',1,'yage::LogMessage::operator&lt;&lt;(std::ostream &amp;(*fn)(std::ostream &amp;os))'],['../namespaceyage.html#a7ed614bc9d3e8b9f3f8d32b6a7ff28eb',1,'yage::operator&lt;&lt;()']]],
- ['operator_3d',['operator=',['../classyage_1_1GlslProgram.html#a5af953324ac9f89aecf7e0a73a9467ad',1,'yage::GlslProgram::operator=(const GlslProgram &amp;)=delete'],['../classyage_1_1GlslProgram.html#a0de6e3d7c8e39357c7b0f91d85b21fb2',1,'yage::GlslProgram::operator=(GlslProgram &amp;&amp;)=delete'],['../classyage_1_1LogMessage.html#a31eb7ca394acbcfedca104e709f1c4ae',1,'yage::LogMessage::operator=(const LogMessage &amp;msg)=delete'],['../classyage_1_1LogMessage.html#aed38ed794cdc0b3d7776f424570e92da',1,'yage::LogMessage::operator=(LogMessage &amp;&amp;msg)=delete'],['../classyage_1_1LogSink.html#a1ba5b4000f07f581e0d0c2babb2811dc',1,'yage::LogSink::operator=(const LogSink &amp;sink)'],['../classyage_1_1LogSink.html#a43a7bf025e46197b541f186e16209356',1,'yage::LogSink::operator=(LogSink &amp;&amp;sink)'],['../classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee',1,'yage::Sprite::operator=(const Sprite &amp;)=delete'],['../classyage_1_1Sprite.html#a3fe5615022d2b157b9e6375197254897',1,'yage::Sprite::operator=(Sprite &amp;&amp;)=delete'],['../classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737',1,'yage::SpriteBatch::operator=(const SpriteBatch &amp;)=delete'],['../classyage_1_1SpriteBatch.html#a204782dd15c82376555ad0b049c4167f',1,'yage::SpriteBatch::operator=(SpriteBatch &amp;&amp;)=delete'],['../classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db',1,'yage::Window::operator=(const Window &amp;)=delete'],['../classyage_1_1Window.html#a98c07656f90a6205f24dfe85ef1137de',1,'yage::Window::operator=(Window &amp;&amp;)=delete'],['../classyage_1_1Active.html#add837044e73e4bc9849f09495535600c',1,'yage::Active::operator=()'],['../classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6',1,'yage::SyncQueue::operator=()']]],
- ['operator_3d_3d',['operator==',['../classyage_1_1LogSink.html#abe2e73398ecb925233b50be5d15e20f9',1,'yage::LogSink::operator==()'],['../namespaceyage.html#a5ddd829cb1c7c4c880d0fd53326858fe',1,'yage::operator==()']]],
- ['operator_5b_5d',['operator[]',['../classyage_1_1details_1_1Row.html#a703d4eee36d93b1227ad734bdcf27190',1,'yage::details::Row::operator[](int col)'],['../classyage_1_1details_1_1Row.html#adf2f7047871fdc78ba66d9d08cd07736',1,'yage::details::Row::operator[](int col) const '],['../classyage_1_1Matrix.html#a89e826d2c6646002cfae23dde7f61145',1,'yage::Matrix::operator[](int row)'],['../classyage_1_1Matrix.html#a0e989030df9ebc7e3885a7bc811a45c6',1,'yage::Matrix::operator[](int row) const '],['../classyage_1_1Vector.html#a81efa1cb9d4ce8bb8c5cf9652a5650a2',1,'yage::Vector::operator[](int col)'],['../classyage_1_1Vector.html#a54c22538916cfb3b838724b8f8662c35',1,'yage::Vector::operator[](int col) const ']]]
+ ['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0',1,'yage::ParticleBody']]],
+ ['pollevents',['pollEvents',['../classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5',1,'yage::Window']]],
+ ['pop',['pop',['../classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e',1,'yage::SyncQueue::pop()'],['../classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27',1,'yage::SyncQueue::pop(T &amp;item)']]],
+ ['position',['Position',['../structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2',1,'yage::Position::Position()=default'],['../structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2',1,'yage::Position::Position(float x_, float y_)']]],
+ ['push',['push',['../classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1',1,'yage::SyncQueue::push(const T &amp;item)'],['../classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678',1,'yage::SyncQueue::push(T &amp;&amp;item)']]]
];
diff --git a/search/functions_e.js b/search/functions_e.js
index baf7c785..62c0b241 100644
--- a/search/functions_e.js
+++ b/search/functions_e.js
@@ -1,9 +1,4 @@
var searchData=
[
- ['parsejson',['parseJson',['../classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98',1,'yage::SpriteSheet']]],
- ['particlebody',['ParticleBody',['../classyage_1_1ParticleBody.html#ae20aad802b5620597d0521663061efc0',1,'yage::ParticleBody']]],
- ['pollevents',['pollEvents',['../classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5',1,'yage::Window']]],
- ['pop',['pop',['../classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e',1,'yage::SyncQueue::pop()'],['../classyage_1_1SyncQueue.html#ab8a3c646e1d2f9adfcbcfbaa2e2a4b27',1,'yage::SyncQueue::pop(T &amp;item)']]],
- ['position',['Position',['../structyage_1_1Position.html#a41b1d5ee23c50208982ab6089708e5d2',1,'yage::Position::Position()=default'],['../structyage_1_1Position.html#aaeaa1cd93e57adcb08ef4f76513148e2',1,'yage::Position::Position(float x_, float y_)']]],
- ['push',['push',['../classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1',1,'yage::SyncQueue::push(const T &amp;item)'],['../classyage_1_1SyncQueue.html#a4c01a855e97a46449a97c76634ef7678',1,'yage::SyncQueue::push(T &amp;&amp;item)']]]
+ ['quit',['quit',['../namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618',1,'yage']]]
];
diff --git a/search/functions_f.js b/search/functions_f.js
index 62c0b241..b6d2a95f 100644
--- a/search/functions_f.js
+++ b/search/functions_f.js
@@ -1,4 +1,12 @@
var searchData=
[
- ['quit',['quit',['../namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618',1,'yage']]]
+ ['readfiletobuffer',['readFileToBuffer',['../classyage_1_1IoManager.html#a75d13ca634df592e44e4152fedcd446d',1,'yage::IoManager']]],
+ ['rectangle',['Rectangle',['../classyage_1_1Rectangle.html#a45a3203b887ffcdb6a0bc7f5a4de717e',1,'yage::Rectangle']]],
+ ['rectanglecollider',['RectangleCollider',['../classyage_1_1RectangleCollider.html#af9e0964655073b0a190c9d06b449a969',1,'yage::RectangleCollider']]],
+ ['remove',['remove',['../classyage_1_1Logger.html#aac48688c66402e9bc63c4871641ab245',1,'yage::Logger']]],
+ ['render',['render',['../classyage_1_1Batch.html#a3439c8dd88d87be4460161d233044c65',1,'yage::Batch::render()'],['../classyage_1_1Rectangle.html#af9ff615160254c8289e502fac8124891',1,'yage::Rectangle::render()'],['../classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539',1,'yage::Shape::render()'],['../classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d',1,'yage::SpriteBatch::render()']]],
+ ['renderbatch',['RenderBatch',['../structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844',1,'yage::details::RenderBatch']]],
+ ['rigidbody',['RigidBody',['../classyage_1_1RigidBody.html#aed946934f970694c6f6840b09600a606',1,'yage::RigidBody']]],
+ ['row',['Row',['../classyage_1_1details_1_1Row.html#a18904acbce1c6084bc25a753989b5f06',1,'yage::details::Row']]],
+ ['rowsize',['rowSize',['../classyage_1_1Matrix.html#a0cc8e242b2e8319789aae0e1d81834a1',1,'yage::Matrix']]]
];
diff --git a/search/search.js b/search/search.js
index eaecb37c..5fff46bf 100644
--- a/search/search.js
+++ b/search/search.js
@@ -8,16 +8,16 @@
var indexSectionsWithContent =
{
0: "abcdefghijklmnopqrstuvwxyz~",
- 1: "abcgilmprstuvw",
+ 1: "abcdgilmprstuvw",
2: "y",
- 3: "abcgilmprstvwy",
- 4: "abcdefghiklmnopqrstuvwxyz~",
- 5: "abcdfghilmnopqrstuvwxyz",
+ 3: "abcdeilmprstvwy",
+ 4: "abcdefghiklmopqrstuvwxyz~",
+ 5: "abcdefghilmnoprstuvwxyz",
6: "csv",
- 7: "kw",
+ 7: "klw",
8: "abcdefghijklmnopqrstuvwxyz",
9: "dl",
- 10: "g",
+ 10: "gsy",
11: "bdpty"
};
diff --git a/search/typedefs_1.js b/search/typedefs_1.js
index b48899d4..a5ebee5e 100644
--- a/search/typedefs_1.js
+++ b/search/typedefs_1.js
@@ -1,4 +1,6 @@
var searchData=
[
- ['spritemap',['SpriteMap',['../namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9',1,'yage::details']]]
+ ['spritemap',['SpriteMap',['../namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9',1,'yage::details']]],
+ ['stbi_5fuc',['stbi_uc',['../stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d',1,'stb_image.h']]],
+ ['stbi_5fus',['stbi_us',['../stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2',1,'stb_image.h']]]
];
diff --git a/search/variables_0.js b/search/variables_0.js
index c9d903da..94fe46c0 100644
--- a/search/variables_0.js
+++ b/search/variables_0.js
@@ -1,7 +1,5 @@
var searchData=
[
['a',['a',['../structyage_1_1Colour.html#a5aef37a5ac37e44dc32f5f9b1ebee10c',1,'yage::Colour']]],
- ['acceleration_5f',['acceleration_',['../classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f',1,'yage::Body']]],
- ['active_5f',['active_',['../classyage_1_1Logger.html#a489f97b1b21ac425ebbdb063de068744',1,'yage::Logger']]],
- ['attribute_5findex_5f',['attribute_index_',['../classyage_1_1GlslProgram.html#a55d4f797833c688be78c00882112e486',1,'yage::GlslProgram']]]
+ ['acceleration_5f',['acceleration_',['../classyage_1_1Body.html#a36c0a4485bf9a704901d88c6cf212a5f',1,'yage::Body']]]
];
diff --git a/search/variables_1.js b/search/variables_1.js
index f221e3d2..9b174a54 100644
--- a/search/variables_1.js
+++ b/search/variables_1.js
@@ -1,7 +1,6 @@
var searchData=
[
['b',['b',['../structyage_1_1Colour.html#a7bd3ed4a377c384af80aa8c7f55dc96f',1,'yage::Colour']]],
- ['bottom_5fleft_5f',['bottom_left_',['../classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad',1,'yage::Glyph']]],
- ['bottom_5fright_5f',['bottom_right_',['../classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234',1,'yage::Glyph']]],
- ['buffer_5f',['buffer_',['../classyage_1_1LogMessage.html#ae34f407242db5713632181b4ce9ae3d5',1,'yage::LogMessage']]]
+ ['bottom_5fleft',['bottom_left',['../structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056',1,'yage::details::Glyph']]],
+ ['bottom_5fright',['bottom_right',['../structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed',1,'yage::details::Glyph']]]
];
diff --git a/search/variables_10.js b/search/variables_10.js
index c2b2689d..b5c7b8ac 100644
--- a/search/variables_10.js
+++ b/search/variables_10.js
@@ -1,9 +1,6 @@
var searchData=
[
- ['texture_5f',['texture_',['../classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0',1,'yage::Sprite::texture_()'],['../classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8',1,'yage::Glyph::texture_()'],['../classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160',1,'yage::RenderBatch::texture_()'],['../classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8',1,'yage::SpriteSheet::texture_()']]],
- ['texture_5fcache_5f',['texture_cache_',['../classyage_1_1ResourceManager.html#a2799a8ff957874fbe7b7c791781255f6',1,'yage::ResourceManager']]],
- ['texture_5fmap_5f',['texture_map_',['../classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323',1,'yage::TextureCache']]],
- ['thread_5f',['thread_',['../classyage_1_1Active.html#ad673e2fd5b6c0c12de94ea7fcd750a50',1,'yage::Active']]],
- ['top_5fleft_5f',['top_left_',['../classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d',1,'yage::Glyph']]],
- ['top_5fright_5f',['top_right_',['../classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa',1,'yage::Glyph']]]
+ ['texture',['texture',['../structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687',1,'yage::details::RenderBatch::texture()'],['../structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc',1,'yage::details::Glyph::texture()']]],
+ ['top_5fleft',['top_left',['../structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d',1,'yage::details::Glyph']]],
+ ['top_5fright',['top_right',['../structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da',1,'yage::details::Glyph']]]
];
diff --git a/search/variables_11.js b/search/variables_11.js
index 8dff11c2..bffe66be 100644
--- a/search/variables_11.js
+++ b/search/variables_11.js
@@ -1,6 +1,5 @@
var searchData=
[
['u',['u',['../structyage_1_1UV.html#aa726c11ba59a9a5edffef27ac3845053',1,'yage::UV']]],
- ['update_5fmatrix_5f',['update_matrix_',['../classyage_1_1Camera.html#a2a6ad87f9f4c38c3ffe6ec6c090e4c7c',1,'yage::Camera']]],
['uv',['uv',['../structyage_1_1Vertex.html#a2d1923353f0e50e7753ff1ae2d9ba84e',1,'yage::Vertex']]]
];
diff --git a/search/variables_12.js b/search/variables_12.js
index 8afd5b57..c490b8d9 100644
--- a/search/variables_12.js
+++ b/search/variables_12.js
@@ -1,9 +1,5 @@
var searchData=
[
['v',['v',['../structyage_1_1UV.html#a414dc7aeeebf47df1a991aacbb12a793',1,'yage::UV']]],
- ['vao_5f',['vao_',['../classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1',1,'yage::SpriteBatch']]],
- ['vbo_5f',['vbo_',['../classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c',1,'yage::SpriteBatch']]],
- ['vbo_5fid_5f',['vbo_id_',['../classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad',1,'yage::Sprite']]],
- ['velocity_5f',['velocity_',['../classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741',1,'yage::Body']]],
- ['vertex_5fshader_5fid_5f',['vertex_shader_id_',['../classyage_1_1GlslProgram.html#afe46af121e9c0214be6f7b18660c5bc7',1,'yage::GlslProgram']]]
+ ['velocity_5f',['velocity_',['../classyage_1_1Body.html#afead7edec899748eab78879e6e6c5741',1,'yage::Body']]]
];
diff --git a/search/variables_13.js b/search/variables_13.js
index d0b1de52..6be9d695 100644
--- a/search/variables_13.js
+++ b/search/variables_13.js
@@ -1,8 +1,5 @@
var searchData=
[
['w',['w',['../classyage_1_1Vector4.html#acf752077d460438407ed3c84fe199f63',1,'yage::Vector4']]],
- ['width',['width',['../structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0',1,'yage::details::Coordinate::width()'],['../structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598',1,'yage::Texture::width()']]],
- ['width_5f',['width_',['../classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8',1,'yage::Sprite']]],
- ['window_5f',['window_',['../classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787',1,'yage::Window']]],
- ['wrapper_5f',['wrapper_',['../classyage_1_1LogSink.html#a63dfa11dc8cc1d885b61613e10332fdc',1,'yage::LogSink']]]
+ ['width',['width',['../structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0',1,'yage::details::Coordinate::width()'],['../structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598',1,'yage::Texture::width()']]]
];
diff --git a/search/variables_14.js b/search/variables_14.js
index 7a416b4d..ab131f14 100644
--- a/search/variables_14.js
+++ b/search/variables_14.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['x',['x',['../structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc',1,'yage::details::Coordinate::x()'],['../structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91',1,'yage::Position::x()'],['../classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13',1,'yage::Vector4::x()']]],
- ['x_5f',['x_',['../classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03',1,'yage::Sprite']]]
+ ['x',['x',['../structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc',1,'yage::details::Coordinate::x()'],['../structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046',1,'yage::Texture::x()'],['../structyage_1_1Position.html#a4f5904d6d7b22802211f0565bc9f6c91',1,'yage::Position::x()'],['../classyage_1_1Vector3.html#aca2fa665275db5e0b842f64106b0c797',1,'yage::Vector3::x()'],['../classyage_1_1Vector4.html#a4936ef80cc2726f6b20f525977339a13',1,'yage::Vector4::x()']]]
];
diff --git a/search/variables_15.js b/search/variables_15.js
index aa1626b3..125a8ec9 100644
--- a/search/variables_15.js
+++ b/search/variables_15.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['y',['y',['../structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508',1,'yage::details::Coordinate::y()'],['../structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27',1,'yage::Position::y()'],['../classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735',1,'yage::Vector4::y()']]],
- ['y_5f',['y_',['../classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed',1,'yage::Sprite']]]
+ ['y',['y',['../structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508',1,'yage::details::Coordinate::y()'],['../structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0',1,'yage::Texture::y()'],['../structyage_1_1Position.html#a45b8cc8245d0e05bb9e482d85512ee27',1,'yage::Position::y()'],['../classyage_1_1Vector3.html#a3076edb39227c1fcc77a8160fb9c5832',1,'yage::Vector3::y()'],['../classyage_1_1Vector4.html#ae0609f2db5e14fe05fddd71ec09f4735',1,'yage::Vector4::y()']]]
];
diff --git a/search/variables_2.js b/search/variables_2.js
index 13399ebe..fb9545ac 100644
--- a/search/variables_2.js
+++ b/search/variables_2.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['camera_5fmatrix_5f',['camera_matrix_',['../classyage_1_1Camera.html#a2c1c0547d4c4a9bce102f2fb0c9071b3',1,'yage::Camera']]],
- ['colour',['colour',['../structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182',1,'yage::Vertex']]],
- ['cond_5f',['cond_',['../classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4',1,'yage::SyncQueue']]]
+ ['colour',['colour',['../structyage_1_1Vertex.html#a142db28be39f418a06fa43f75d386182',1,'yage::Vertex']]]
];
diff --git a/search/variables_3.js b/search/variables_3.js
index b333129c..607e1568 100644
--- a/search/variables_3.js
+++ b/search/variables_3.js
@@ -1,5 +1,5 @@
var searchData=
[
['data_5f',['data_',['../classyage_1_1Matrix.html#a0ab11922319366f6e74f6e9e7d7abeed',1,'yage::Matrix']]],
- ['depth_5f',['depth_',['../classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704',1,'yage::Glyph']]]
+ ['depth',['depth',['../structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9',1,'yage::details::Glyph']]]
];
diff --git a/search/variables_4.js b/search/variables_4.js
index a2139d6e..a538e0b7 100644
--- a/search/variables_4.js
+++ b/search/variables_4.js
@@ -1,8 +1,4 @@
var searchData=
[
- ['filehandle_5f',['fileHandle_',['../logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1',1,'logsink.cpp']]],
- ['filelocations_5f',['fileLocations_',['../classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3',1,'yage::SpriteSheet']]],
- ['filename',['fileName',['../structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4',1,'yage::LogMessage::Meta']]],
- ['force_5f',['force_',['../classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d',1,'yage::Body']]],
- ['fragment_5fshader_5fid_5f',['fragment_shader_id_',['../classyage_1_1GlslProgram.html#ad20ee225c8e981861923a2d7eeaf940f',1,'yage::GlslProgram']]]
+ ['eof',['eof',['../structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177',1,'stbi_io_callbacks']]]
];
diff --git a/search/variables_5.js b/search/variables_5.js
index 949edabd..b4456030 100644
--- a/search/variables_5.js
+++ b/search/variables_5.js
@@ -1,8 +1,6 @@
var searchData=
[
- ['g',['g',['../structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd',1,'yage::Colour']]],
- ['glyph_5fptrs_5f',['glyph_ptrs_',['../classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e',1,'yage::SpriteBatch']]],
- ['glyphs_5f',['glyphs_',['../classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200',1,'yage::SpriteBatch']]],
- ['gravity',['GRAVITY',['../classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766',1,'yage::Body']]],
- ['gravity_5f',['gravity_',['../classyage_1_1Body.html#a454a7c59d07c94afb0a35c3d53ec2191',1,'yage::Body']]]
+ ['filehandle_5f',['fileHandle_',['../logsink_8cpp.html#ae3c7a5bad8dd0db0a0a9cdd60c7b53d1',1,'logsink.cpp']]],
+ ['filename',['fileName',['../structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4',1,'yage::LogMessage::Meta']]],
+ ['force_5f',['force_',['../classyage_1_1Body.html#a262c896b473d7672cde524145cd7981d',1,'yage::Body']]]
];
diff --git a/search/variables_6.js b/search/variables_6.js
index c7be614c..a62d4be6 100644
--- a/search/variables_6.js
+++ b/search/variables_6.js
@@ -1,5 +1,6 @@
var searchData=
[
- ['height',['height',['../structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941',1,'yage::details::Coordinate::height()'],['../structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e',1,'yage::Texture::height()']]],
- ['height_5f',['height_',['../classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3',1,'yage::Sprite']]]
+ ['g',['g',['../structyage_1_1Colour.html#a205d3a63268f4879adf27aabdf71a6dd',1,'yage::Colour']]],
+ ['gravity',['GRAVITY',['../classyage_1_1Body.html#a4f61913cf00244a6160e09cda846f766',1,'yage::Body']]],
+ ['gravity_5f',['gravity_',['../classyage_1_1Body.html#a454a7c59d07c94afb0a35c3d53ec2191',1,'yage::Body']]]
];
diff --git a/search/variables_7.js b/search/variables_7.js
index 101a412f..23b66f3c 100644
--- a/search/variables_7.js
+++ b/search/variables_7.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['id',['id',['../structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968',1,'yage::Texture']]],
- ['impl',['impl',['../structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d',1,'yage::LogSink::Model']]],
- ['index_5f',['index_',['../classyage_1_1details_1_1Row.html#a438164456acdb9e20c3e13ef9e43d5b3',1,'yage::details::Row']]]
+ ['height',['height',['../structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941',1,'yage::details::Coordinate::height()'],['../structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e',1,'yage::Texture::height()']]]
];
diff --git a/search/variables_8.js b/search/variables_8.js
index 828465a2..54afd0ea 100644
--- a/search/variables_8.js
+++ b/search/variables_8.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['lineno',['lineNo',['../structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362',1,'yage::LogMessage::Meta']]]
+ ['id',['id',['../structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968',1,'yage::Texture']]]
];
diff --git a/search/variables_9.js b/search/variables_9.js
index 90d9c038..3ff7a22a 100644
--- a/search/variables_9.js
+++ b/search/variables_9.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['mass_5f',['mass_',['../classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289',1,'yage::Body']]],
- ['meta_5f',['meta_',['../classyage_1_1LogMessage.html#a80b72c0e143b382538c347c201cbb4ee',1,'yage::LogMessage']]],
- ['mutex_5f',['mutex_',['../classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b',1,'yage::SyncQueue']]]
+ ['level',['level',['../structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b',1,'yage::LogMessage::Meta']]],
+ ['line',['line',['../structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c',1,'yage::LogMessage::Meta']]]
];
diff --git a/search/variables_a.js b/search/variables_a.js
index bf4ff234..25f26d71 100644
--- a/search/variables_a.js
+++ b/search/variables_a.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['num_5fvertices',['NUM_VERTICES',['../classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5',1,'yage::SpriteBatch']]],
- ['num_5fvertices_5f',['num_vertices_',['../classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba',1,'yage::RenderBatch']]]
+ ['mass_5f',['mass_',['../classyage_1_1Body.html#a01b2a500e71bc88f2cb597f376bc8289',1,'yage::Body']]]
];
diff --git a/search/variables_b.js b/search/variables_b.js
index 709c3022..4a987a15 100644
--- a/search/variables_b.js
+++ b/search/variables_b.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['offset_5f',['offset_',['../classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7',1,'yage::RenderBatch']]],
- ['ortho_5fmatrix_5f',['ortho_matrix_',['../classyage_1_1Camera.html#a7419b0ba645f44f05fa125421c041e26',1,'yage::Camera']]],
- ['owner_5f',['owner_',['../classyage_1_1LogMessage.html#ad093f33360fc32ef014d215b0c1d4792',1,'yage::LogMessage']]]
+ ['num_5fvertices',['num_vertices',['../structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29',1,'yage::details::RenderBatch::num_vertices()'],['../classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5',1,'yage::SpriteBatch::NUM_VERTICES()']]]
];
diff --git a/search/variables_c.js b/search/variables_c.js
index cd4ee052..57668c50 100644
--- a/search/variables_c.js
+++ b/search/variables_c.js
@@ -1,7 +1,4 @@
var searchData=
[
- ['parent_5f',['parent_',['../classyage_1_1details_1_1Row.html#a9c781b74460f4cb429de8838f74857d8',1,'yage::details::Row']]],
- ['position',['position',['../structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a',1,'yage::Vertex']]],
- ['position_5f',['position_',['../classyage_1_1Camera.html#af2a2daab94b27622cc0d7764b13edfc2',1,'yage::Camera::position_()'],['../classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157',1,'yage::Body::position_()'],['../classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161',1,'yage::Collider::position_()']]],
- ['program_5fid_5f',['program_id_',['../classyage_1_1GlslProgram.html#ad8f02beee9fdc3608d7aceebf3398e8b',1,'yage::GlslProgram']]]
+ ['offset',['offset',['../structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422',1,'yage::details::RenderBatch']]]
];
diff --git a/search/variables_d.js b/search/variables_d.js
index 88db4eb5..ae770af2 100644
--- a/search/variables_d.js
+++ b/search/variables_d.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['queue_5f',['queue_',['../classyage_1_1Active.html#a8c957af55704f6f30734054336f1a6d3',1,'yage::Active::queue_()'],['../classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968',1,'yage::SyncQueue::queue_()']]]
+ ['position',['position',['../structyage_1_1Vertex.html#abefe88d26b055655f9cc038a1dd4ff6a',1,'yage::Vertex']]],
+ ['position_5f',['position_',['../classyage_1_1Body.html#a8fe4f244be47f1336a57c1f2aa095157',1,'yage::Body::position_()'],['../classyage_1_1Collider.html#a2ae348a82a0ca7a871c05f36e5031161',1,'yage::Collider::position_()']]]
];
diff --git a/search/variables_e.js b/search/variables_e.js
index d36958d0..2b810f87 100644
--- a/search/variables_e.js
+++ b/search/variables_e.js
@@ -1,6 +1,5 @@
var searchData=
[
['r',['r',['../structyage_1_1Colour.html#a572fe7933c59ebfa6720088cd33dad99',1,'yage::Colour']]],
- ['render_5fbatches_5f',['render_batches_',['../classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008',1,'yage::SpriteBatch']]],
- ['running_5f',['running_',['../classyage_1_1Active.html#ac32d54302bf084f0f7422cce5ee617db',1,'yage::Active']]]
+ ['read',['read',['../structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82',1,'stbi_io_callbacks']]]
];
diff --git a/search/variables_f.js b/search/variables_f.js
index 2fb91ccc..c4b88a9a 100644
--- a/search/variables_f.js
+++ b/search/variables_f.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['scale_5f',['scale_',['../classyage_1_1Camera.html#a665b599105c6930711d31ada6e12dc8f',1,'yage::Camera']]],
- ['sinks_5f',['sinks_',['../classyage_1_1Logger.html#a4135a0742877aa36d52f1867bc4e7b1f',1,'yage::Logger']]],
['size_5f',['size_',['../classyage_1_1Collider.html#ad7456f84c1acb4fd9ee0ea67c8ee7308',1,'yage::Collider']]],
- ['spritebatch',['SpriteBatch',['../classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f',1,'yage::RenderBatch']]]
+ ['skip',['skip',['../structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83',1,'stbi_io_callbacks']]]
];
diff --git a/glslprogram_8cpp.html b/shader_8cpp.html
index 37d015c5..be9fdc29 100644
--- a/glslprogram_8cpp.html
+++ b/shader_8cpp.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/glslprogram.cpp File Reference</title>
+<title>YAGE: yage/render/shader.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -86,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('glslprogram_8cpp.html','');});
+$(document).ready(function(){initNavTree('shader_8cpp.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -107,16 +107,18 @@ $(document).ready(function(){initNavTree('glslprogram_8cpp.html','');});
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
-<div class="title">glslprogram.cpp File Reference</div> </div>
+<div class="title">shader.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &quot;<a class="el" href="glslprogram_8h_source.html">glslprogram.h</a>&quot;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="shader_8h_source.html">shader.h</a>&quot;</code><br/>
<code>#include &lt;fstream&gt;</code><br/>
+<code>#include &lt;sstream&gt;</code><br/>
<code>#include &lt;stdexcept&gt;</code><br/>
+<code>#include &lt;string&gt;</code><br/>
<code>#include &lt;vector&gt;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
@@ -126,15 +128,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="glslprogram_8cpp.html">glslprogram.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="shader_8cpp.html">shader.cpp</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/glslprogram_8h.html b/shader_8h.html
index 5ffbebb4..6ef09f32 100644
--- a/glslprogram_8h.html
+++ b/shader_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/glslprogram.h File Reference</title>
+<title>YAGE: yage/render/shader.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -86,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('glslprogram_8h.html','');});
+$(document).ready(function(){initNavTree('shader_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -108,21 +108,22 @@ $(document).ready(function(){initNavTree('glslprogram_8h.html','');});
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
-<div class="title">glslprogram.h File Reference</div> </div>
+<div class="title">shader.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;glad/glad.h&gt;</code><br/>
+<div class="textblock"><code>#include &lt;glm/glm.hpp&gt;</code><br/>
+<code>#include &lt;glad/glad.h&gt;</code><br/>
<code>#include &lt;string&gt;</code><br/>
</div>
-<p><a href="glslprogram_8h_source.html">Go to the source code of this file.</a></p>
+<p><a href="shader_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1GlslProgram.html">yage::GlslProgram</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shader.html">yage::Shader</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
@@ -132,15 +133,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="glslprogram_8h.html">glslprogram.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="shader_8h.html">shader.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/shader_8h_source.html b/shader_8h_source.html
new file mode 100644
index 00000000..7d1a638d
--- /dev/null
+++ b/shader_8h_source.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/render/shader.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('shader_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">shader.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="shader_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_RENDER_SHADER_H</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_RENDER_SHADER_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;glm/glm.hpp&gt;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classyage_1_1Shader.html"> 20</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Shader.html">Shader</a></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">Shader</a>(<span class="keyword">const</span> std::string &amp;vertex_path, <span class="keyword">const</span> std::string &amp;fragment_path);</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">Shader</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">Shader</a>(<a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">~Shader</a>();</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;<a class="code" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;<a class="code" href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">operator=</a>(<a class="code" href="classyage_1_1Shader.html">Shader</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">use</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">setUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> value) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">setUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">float</span> value) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">setUniform</a>(<span class="keyword">const</span> std::string &amp;name, <span class="keyword">const</span> glm::mat4 &amp;matrix) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; GLuint program_id_ = 0;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; GLint getUniformLocation(<span class="keyword">const</span> std::string &amp;uniform_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> errorCheck(GLuint shader, <span class="keyword">const</span> std::string &amp;shader_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;};</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1Shader_html_a5d966c327ae0749ca5758880b684103a"><div class="ttname"><a href="classyage_1_1Shader.html#a5d966c327ae0749ca5758880b684103a">yage::Shader::operator=</a></div><div class="ttdeci">Shader &amp; operator=(const Shader &amp;)=delete</div></div>
+<div class="ttc" id="classyage_1_1Shader_html_a34fe30eb6e6d595c1996e8ea6fb3961a"><div class="ttname"><a href="classyage_1_1Shader.html#a34fe30eb6e6d595c1996e8ea6fb3961a">yage::Shader::Shader</a></div><div class="ttdeci">Shader(const std::string &amp;vertex_path, const std::string &amp;fragment_path)</div><div class="ttdef"><b>Definition:</b> shader.cpp:22</div></div>
+<div class="ttc" id="classyage_1_1Shader_html_ac9bff8500e2adfa1745c843bc612f215"><div class="ttname"><a href="classyage_1_1Shader.html#ac9bff8500e2adfa1745c843bc612f215">yage::Shader::setUniform</a></div><div class="ttdeci">void setUniform(const std::string &amp;name, int value) const </div><div class="ttdoc">set uniforms of different type </div><div class="ttdef"><b>Definition:</b> shader.cpp:87</div></div>
+<div class="ttc" id="classyage_1_1Shader_html"><div class="ttname"><a href="classyage_1_1Shader.html">yage::Shader</a></div><div class="ttdef"><b>Definition:</b> shader.h:20</div></div>
+<div class="ttc" id="classyage_1_1Shader_html_a9307c4f3cfaf5e584b70601294e09bdd"><div class="ttname"><a href="classyage_1_1Shader.html#a9307c4f3cfaf5e584b70601294e09bdd">yage::Shader::~Shader</a></div><div class="ttdeci">~Shader()</div><div class="ttdef"><b>Definition:</b> shader.cpp:74</div></div>
+<div class="ttc" id="classyage_1_1Shader_html_a8cd66c177f148ac0b619766188696e6c"><div class="ttname"><a href="classyage_1_1Shader.html#a8cd66c177f148ac0b619766188696e6c">yage::Shader::use</a></div><div class="ttdeci">void use() const </div><div class="ttdoc">compiles vertex and fragment shader </div><div class="ttdef"><b>Definition:</b> shader.cpp:82</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="shader_8h.html">shader.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/picopng_8h.html b/shape_8h.html
index 89800ce4..92bbd2d8 100644
--- a/picopng_8h.html
+++ b/shape_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/picopng.h File Reference</title>
+<title>YAGE: yage/render/shape.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -86,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('picopng_8h.html','');});
+$(document).ready(function(){initNavTree('shape_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -105,42 +105,34 @@ $(document).ready(function(){initNavTree('picopng_8h.html','');});
<div class="header">
<div class="summary">
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#func-members">Functions</a> </div>
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
-<div class="title">picopng.h File Reference</div> </div>
+<div class="title">shape.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
-
-<p><hr/>
-
-<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;cstdlib&gt;</code><br/>
-<code>#include &lt;vector&gt;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="drawable_8h_source.html">drawable.h</a>&quot;</code><br/>
</div>
-<p><a href="picopng_8h_source.html">Go to the source code of this file.</a></p>
+<p><a href="shape_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Shape.html">yage::Shape</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a0cf122e98752ed702393cbe30df51356"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">yage::decodePNG</a> (std::vector&lt; unsigned char &gt; &amp;out_image, unsigned long &amp;image_width, unsigned long &amp;image_height, const unsigned char *in_png, size_t in_size, bool convert_to_rgba32)</td></tr>
-<tr class="separator:a0cf122e98752ed702393cbe30df51356"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
-<h2>MIT License, see LICENSE file for more details. </h2>
-</div></div><!-- contents -->
+</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="picopng_8h.html">picopng.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="shape_8h.html">shape.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/picopng_8h_source.html b/shape_8h_source.html
index 017b9116..b587ee8b 100644
--- a/picopng_8h_source.html
+++ b/shape_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/picopng.h Source File</title>
+<title>YAGE: yage/render/shape.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -86,7 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('picopng_8h_source.html','');});
+$(document).ready(function(){initNavTree('shape_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -105,30 +105,37 @@ $(document).ready(function(){initNavTree('picopng_8h_source.html','');});
<div class="header">
<div class="headertitle">
-<div class="title">picopng.h</div> </div>
+<div class="title">shape.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="picopng_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div>
+<a href="shape_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef YAGE_RENDER_SHAPE_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_RENDER_SHAPE_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="drawable_8h.html">drawable.h</a>&quot;</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="classyage_1_1Shape.html"> 9</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Shape.html">Shape</a> : <span class="keyword">public</span> <a class="code" href="classyage_1_1Drawable.html">Drawable</a></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">render</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;};</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">decodePNG</a>(std::vector&lt;unsigned char&gt; &amp;out_image,</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &amp;image_width, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> &amp;image_height,</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *in_png, <span class="keywordtype">size_t</span> in_size,</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">bool</span> convert_to_rgba32 = <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="ttc" id="namespaceyage_html_a0cf122e98752ed702393cbe30df51356"><div class="ttname"><a href="namespaceyage.html#a0cf122e98752ed702393cbe30df51356">yage::decodePNG</a></div><div class="ttdeci">int decodePNG(std::vector&lt; unsigned char &gt; &amp;out_image, unsigned long &amp;image_width, unsigned long &amp;image_height, const unsigned char *in_png, size_t in_size, bool convert_to_rgba32)</div><div class="ttdef"><b>Definition:</b> picopng.cpp:34</div></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1Shape_html"><div class="ttname"><a href="classyage_1_1Shape.html">yage::Shape</a></div><div class="ttdef"><b>Definition:</b> shape.h:9</div></div>
+<div class="ttc" id="drawable_8h_html"><div class="ttname"><a href="drawable_8h.html">drawable.h</a></div></div>
+<div class="ttc" id="classyage_1_1Shape_html_ab83fd121fe04debf98b42f29c919b539"><div class="ttname"><a href="classyage_1_1Shape.html#ab83fd121fe04debf98b42f29c919b539">yage::Shape::render</a></div><div class="ttdeci">virtual void render() const </div></div>
+<div class="ttc" id="classyage_1_1Drawable_html"><div class="ttname"><a href="classyage_1_1Drawable.html">yage::Drawable</a></div><div class="ttdef"><b>Definition:</b> drawable.h:9</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="picopng_8h.html">picopng.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="shape_8h.html">shape.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/sprite_8cpp.html b/sprite_8cpp.html
index b9c35ab8..414d4fb1 100644
--- a/sprite_8cpp.html
+++ b/sprite_8cpp.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/sprite.cpp File Reference</title>
+<title>YAGE: yage/render/sprite.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -114,9 +114,9 @@ $(document).ready(function(){initNavTree('sprite_8cpp.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;<a class="el" href="resourcemanager_8h_source.html">yage/core/resourcemanager.h</a>&gt;</code><br/>
-<code>#include &lt;<a class="el" href="sprite_8h_source.html">yage/core/sprite.h</a>&gt;</code><br/>
-<code>#include &lt;<a class="el" href="vertex_8h_source.html">yage/core/vertex.h</a>&gt;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="sprite_8h_source.html">sprite.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="resourcemanager_8h_source.html">../core/resourcemanager.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="vertex_8h_source.html">../data/vertex.h</a>&quot;</code><br/>
<code>#include &lt;cstddef&gt;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
@@ -126,15 +126,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="sprite_8cpp.html">sprite.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="sprite_8cpp.html">sprite.cpp</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/sprite_8h.html b/sprite_8h.html
index cdbbe15d..2acddf53 100644
--- a/sprite_8h.html
+++ b/sprite_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/sprite.h File Reference</title>
+<title>YAGE: yage/render/sprite.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -115,7 +115,7 @@ $(document).ready(function(){initNavTree('sprite_8h.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
<code>#include &lt;glad/glad.h&gt;</code><br/>
<code>#include &lt;string&gt;</code><br/>
</div>
@@ -133,15 +133,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="sprite_8h.html">sprite.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="sprite_8h.html">sprite.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/sprite_8h_source.html b/sprite_8h_source.html
index 9a677fe5..134425a7 100644
--- a/sprite_8h_source.html
+++ b/sprite_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/sprite.h Source File</title>
+<title>YAGE: yage/render/sprite.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('sprite_8h_source.html','');});
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef SPRITE_H</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define SPRITE_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture_8h.html">texture.h</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;../data/texture.h&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
@@ -124,12 +124,12 @@ $(document).ready(function(){initNavTree('sprite_8h_source.html','');});
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html"> 23</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Sprite.html">Sprite</a></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03"> 26</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">x_</a>;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed"> 27</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">y_</a>;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8"> 28</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">width_</a>;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3"> 29</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">height_</a>;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad"> 30</a></span>&#160; GLuint <a class="code" href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">vbo_id_</a> = 0;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0"> 31</a></span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">texture_</a>;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">float</span> x_;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">float</span> y_;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">float</span> width_;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">float</span> height_;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLuint vbo_id_ = 0;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> texture_;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">Sprite</a>() = <span class="keywordflow">default</span>;</div>
@@ -149,26 +149,19 @@ $(document).ready(function(){initNavTree('sprite_8h_source.html','');});
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classyage_1_1Sprite_html_a113bfddfa62846a1d8391d1b86de7987"><div class="ttname"><a href="classyage_1_1Sprite.html#a113bfddfa62846a1d8391d1b86de7987">yage::Sprite::Sprite</a></div><div class="ttdeci">Sprite()=default</div></div>
-<div class="ttc" id="texture_8h_html"><div class="ttname"><a href="texture_8h.html">texture.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="classyage_1_1Sprite_html_a8eed26f4fa57b3ad47d791564233ee40"><div class="ttname"><a href="classyage_1_1Sprite.html#a8eed26f4fa57b3ad47d791564233ee40">yage::Sprite::draw</a></div><div class="ttdeci">void draw()</div><div class="ttdef"><b>Definition:</b> sprite.cpp:71</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_ac8f6505d7b080bb346458e6d70cc60d0"><div class="ttname"><a href="classyage_1_1Sprite.html#ac8f6505d7b080bb346458e6d70cc60d0">yage::Sprite::texture_</a></div><div class="ttdeci">Texture texture_</div><div class="ttdef"><b>Definition:</b> sprite.h:31</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_a0f48a2cd909000f719cde8dea33bf1ad"><div class="ttname"><a href="classyage_1_1Sprite.html#a0f48a2cd909000f719cde8dea33bf1ad">yage::Sprite::vbo_id_</a></div><div class="ttdeci">GLuint vbo_id_</div><div class="ttdef"><b>Definition:</b> sprite.h:30</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_a9699a12e74c0b78d3b4e396fed59b7a8"><div class="ttname"><a href="classyage_1_1Sprite.html#a9699a12e74c0b78d3b4e396fed59b7a8">yage::Sprite::width_</a></div><div class="ttdeci">float width_</div><div class="ttdef"><b>Definition:</b> sprite.h:28</div></div>
<div class="ttc" id="classyage_1_1Sprite_html_a2f6294be8b2551077cf475892bcddcc1"><div class="ttname"><a href="classyage_1_1Sprite.html#a2f6294be8b2551077cf475892bcddcc1">yage::Sprite::init</a></div><div class="ttdeci">void init(float x, float y, float width, float height, const std::string &amp;texture_path)</div><div class="ttdef"><b>Definition:</b> sprite.cpp:25</div></div>
<div class="ttc" id="structyage_1_1Texture_html"><div class="ttname"><a href="structyage_1_1Texture.html">yage::Texture</a></div><div class="ttdef"><b>Definition:</b> texture.h:17</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_a6374eb3013ac9b87fa136f317dfb8d03"><div class="ttname"><a href="classyage_1_1Sprite.html#a6374eb3013ac9b87fa136f317dfb8d03">yage::Sprite::x_</a></div><div class="ttdeci">float x_</div><div class="ttdef"><b>Definition:</b> sprite.h:26</div></div>
<div class="ttc" id="classyage_1_1Sprite_html_aa2f833e040940616fa17ee8f02f8cab2"><div class="ttname"><a href="classyage_1_1Sprite.html#aa2f833e040940616fa17ee8f02f8cab2">yage::Sprite::~Sprite</a></div><div class="ttdeci">~Sprite()</div><div class="ttdef"><b>Definition:</b> sprite.cpp:18</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_a91e70bb6f123955cb3dd5e7932e9c3ed"><div class="ttname"><a href="classyage_1_1Sprite.html#a91e70bb6f123955cb3dd5e7932e9c3ed">yage::Sprite::y_</a></div><div class="ttdeci">float y_</div><div class="ttdef"><b>Definition:</b> sprite.h:27</div></div>
<div class="ttc" id="classyage_1_1Sprite_html_a97dd80e05efb9399ee8471ff40a77bee"><div class="ttname"><a href="classyage_1_1Sprite.html#a97dd80e05efb9399ee8471ff40a77bee">yage::Sprite::operator=</a></div><div class="ttdeci">Sprite &amp; operator=(const Sprite &amp;)=delete</div></div>
-<div class="ttc" id="classyage_1_1Sprite_html_abe6306d84f416b99ff3725ac6d9659d3"><div class="ttname"><a href="classyage_1_1Sprite.html#abe6306d84f416b99ff3725ac6d9659d3">yage::Sprite::height_</a></div><div class="ttdeci">float height_</div><div class="ttdef"><b>Definition:</b> sprite.h:29</div></div>
<div class="ttc" id="classyage_1_1Sprite_html"><div class="ttname"><a href="classyage_1_1Sprite.html">yage::Sprite</a></div><div class="ttdef"><b>Definition:</b> sprite.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="sprite_8h.html">sprite.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="sprite_8h.html">sprite.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritebatch_8cpp.html b/spritebatch_8cpp.html
index f75482a6..12a25234 100644
--- a/spritebatch_8cpp.html
+++ b/spritebatch_8cpp.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/spritebatch.cpp File Reference</title>
+<title>YAGE: yage/render/spritebatch.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -114,9 +114,12 @@ $(document).ready(function(){initNavTree('spritebatch_8cpp.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;<a class="el" href="spritebatch_8h_source.html">yage/core/spritebatch.h</a>&gt;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="logger_8h_source.html">../core/logger.h</a>&quot;</code><br/>
<code>#include &lt;algorithm&gt;</code><br/>
+<code>#include &lt;iostream&gt;</code><br/>
<code>#include &lt;stdexcept&gt;</code><br/>
+<code>#include &lt;GLFW/glfw3.h&gt;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
@@ -125,15 +128,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritebatch_8h.html b/spritebatch_8h.html
index 6ad1d0b3..d810b1f0 100644
--- a/spritebatch_8h.html
+++ b/spritebatch_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/spritebatch.h File Reference</title>
+<title>YAGE: yage/render/spritebatch.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -115,20 +115,20 @@ $(document).ready(function(){initNavTree('spritebatch_8h.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &quot;<a class="el" href="vertex_8h_source.html">vertex.h</a>&quot;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="vertex_8h_source.html">../data/vertex.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="batch_8h_source.html">batch.h</a>&quot;</code><br/>
<code>#include &lt;glad/glad.h&gt;</code><br/>
<code>#include &lt;glm/glm.hpp&gt;</code><br/>
-<code>#include &lt;<a class="el" href="matrix_8h_source.html">yage/math/matrix.h</a>&gt;</code><br/>
<code>#include &lt;vector&gt;</code><br/>
</div>
<p><a href="spritebatch_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1Glyph.html">yage::Glyph</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classyage_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture. <a href="classyage_1_1Glyph.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture. <a href="structyage_1_1details_1_1Glyph.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -138,17 +138,20 @@ Namespaces</h2></td></tr>
<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceyage_1_1details"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage_1_1details.html">yage::details</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritebatch_8h.html">spritebatch.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="spritebatch_8h.html">spritebatch.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritebatch_8h_source.html b/spritebatch_8h_source.html
index 28e871ed..b94a9ee5 100644
--- a/spritebatch_8h_source.html
+++ b/spritebatch_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/spritebatch.h Source File</title>
+<title>YAGE: yage/render/spritebatch.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -109,155 +109,125 @@ $(document).ready(function(){initNavTree('spritebatch_8h_source.html','');});
</div><!--header-->
<div class="contents">
<a href="spritebatch_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifndef YAGE_SPRITE_BATCH_H</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_SPRITE_BATCH_H</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vertex_8h.html">vertex.h</a>&quot;</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;glm/glm.hpp&gt;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="matrix_8h.html">yage/math/matrix.h</a>&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_SPRITE_BATCH_H</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_SPRITE_BATCH_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;../data/vertex.h&quot;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="batch_8h.html">batch.h</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;glm/glm.hpp&gt;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span>details</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>SpriteBatch;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Glyph.html">Glyph</a></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8"> 33</a></span>&#160; GLuint <a class="code" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">texture_</a>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704"> 34</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">depth_</a>;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d"> 35</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">top_left_</a>;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa"> 36</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">top_right_</a>;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234"> 37</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">bottom_right_</a>;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad"> 38</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">bottom_left_</a>;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">Glyph</a>(GLuint <a class="code" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">texture</a>, <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">depth</a>, <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="code" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">top_left</a>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="code" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">top_right</a>, <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="code" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">bottom_right</a>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;<a class="code" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">bottom_left</a>);</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2"> 45</a></span>&#160; GLuint <a class="code" href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">texture</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">texture_</a>; }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9"> 46</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">depth</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">depth_</a>; }</div>
-<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f"> 47</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">top_left</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">top_left_</a>; }</div>
-<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec"> 48</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">top_right</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">top_right_</a>; }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2"> 49</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">bottom_right</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">bottom_right_</a>; }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1"> 50</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">bottom_left</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">bottom_left_</a>; }</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;};</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html"> 53</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1RenderBatch.html">RenderBatch</a></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div>
-<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f"> 55</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">SpriteBatch</a>;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1RenderBatch.html"> 26</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structyage_1_1details_1_1RenderBatch.html">RenderBatch</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422"> 27</a></span>&#160; GLint <a class="code" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">offset</a>;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29"> 28</a></span>&#160; GLsizei <a class="code" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">num_vertices</a>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687"> 29</a></span>&#160; GLuint <a class="code" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">texture</a>;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844"> 31</a></span>&#160; <a class="code" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">RenderBatch</a>(GLint offset_i, GLsizei num_vertices_i, GLuint texture_i)</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; : <a class="code" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">offset</a>(offset_i), <a class="code" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">num_vertices</a>(num_vertices_i), <a class="code" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">texture</a>(texture_i)</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;};</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html"> 39</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structyage_1_1details_1_1Glyph.html">Glyph</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc"> 40</a></span>&#160; GLuint <a class="code" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">texture</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9"> 41</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">depth</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d"> 42</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">top_left</a>;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da"> 43</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">top_right</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed"> 44</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">bottom_right</a>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056"> 45</a></span>&#160; <a class="code" href="structyage_1_1Vertex.html">Vertex</a> <a class="code" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">bottom_left</a>;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c"> 47</a></span>&#160; <a class="code" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">Glyph</a>(GLuint texture_i, <span class="keywordtype">float</span> depth_i, <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;top_left_i,</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;top_right_i, <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;bottom_right_i,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="structyage_1_1Vertex.html">Vertex</a> &amp;bottom_left_i)</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; : <a class="code" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">texture</a>(texture_i), <a class="code" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">depth</a>(depth_i), <a class="code" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">top_left</a>(top_left_i),</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">top_right</a>(top_right_i), <a class="code" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">bottom_right</a>(bottom_right_i),</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">bottom_left</a>(bottom_left_i)</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;};</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba"> 58</a></span>&#160; GLsizei <a class="code" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">num_vertices_</a>;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7"> 59</a></span>&#160; GLint <a class="code" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">offset_</a>;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160"> 60</a></span>&#160; GLuint <a class="code" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">texture_</a>;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">RenderBatch</a>(GLint <a class="code" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">offset</a>, GLsizei <a class="code" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">num_vertices</a>, GLuint <a class="code" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">texture</a>);</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944"> 65</a></span>&#160; GLint <a class="code" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">offset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">offset_</a>; }</div>
-<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e"> 66</a></span>&#160; GLsizei <a class="code" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">num_vertices</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">num_vertices_</a>; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d"> 67</a></span>&#160; GLuint <a class="code" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">texture</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">texture_</a>; }</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;};</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5"> 73</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">NUM_VERTICES</a> = 6;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c"> 76</a></span>&#160; GLuint <a class="code" href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">vbo_</a> = 0;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1"> 77</a></span>&#160; GLuint <a class="code" href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">vao_</a> = 0;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200"> 78</a></span>&#160; std::vector&lt;Glyph&gt; <a class="code" href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">glyphs_</a>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e"> 79</a></span>&#160; std::vector&lt;Glyph *&gt; <a class="code" href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">glyph_ptrs_</a>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008"> 80</a></span>&#160; std::vector&lt;RenderBatch&gt; <a class="code" href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">render_batches_</a>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>();</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>(<a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a">~SpriteBatch</a>();</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;<a class="code" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;<a class="code" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">operator=</a>(<a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// initialize vaos and vbos</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">begin</a>();</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">end</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;} <span class="comment">// namespace details</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html"> 59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5"> 62</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">NUM_VERTICES</a> = 6;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; GLuint vao_;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; GLuint vbo_;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; std::vector&lt;details::Glyph&gt; glyphs_;</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; std::vector&lt;details::Glyph *&gt; glyph_ptrs_;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; std::vector&lt;details::RenderBatch&gt; render_batches_;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>();</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">SpriteBatch</a>(<a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a">~SpriteBatch</a>();</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;<a class="code" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;<a class="code" href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">operator=</a>(<a class="code" href="classyage_1_1SpriteBatch.html">SpriteBatch</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// initialize vaos and vbos</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">begin</a>();</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">end</a>();</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// adds a sprite to the sprite batch to be rendered later</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">draw</a>(<span class="keyword">const</span> glm::vec4 &amp;destination_rect, <span class="keyword">const</span> glm::vec4 &amp;uv_rect,</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; GLuint texture, <span class="keyword">const</span> <a class="code" href="structyage_1_1Colour.html">Colour</a> &amp;colour, <span class="keywordtype">float</span> depth);</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// render the batch</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">render</a>();</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> createRenderBatches();</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> sortGlyphs();</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;};</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// adds a sprite to the sprite batch to be rendered later</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">draw</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Vector4.html">yage::Vector4f</a> &amp;destination_rect,</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <a class="code" href="classyage_1_1Vector4.html">yage::Vector4f</a> &amp;uv_rect, GLuint texture,</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> <a class="code" href="structyage_1_1Colour.html">Colour</a> &amp;colour, <span class="keywordtype">float</span> depth);</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// render the batch</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">render</a>();</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">createVertexArray</a>();</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">createRenderBatches</a>();</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">sortGlyphs</a>();</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;};</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html"><div class="ttname"><a href="classyage_1_1RenderBatch.html">yage::RenderBatch</a></div><div class="ttdef"><b>Definition:</b> spritebatch.h:53</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a007d24cd3765e2fcea843f85dbbb475e"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a007d24cd3765e2fcea843f85dbbb475e">yage::SpriteBatch::glyph_ptrs_</a></div><div class="ttdeci">std::vector&lt; Glyph * &gt; glyph_ptrs_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:79</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_a17da9d35451d55766836917699406160"><div class="ttname"><a href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">yage::RenderBatch::texture_</a></div><div class="ttdeci">GLuint texture_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:60</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_add70123a08d594e4cfb627a03ae8daad"><div class="ttname"><a href="classyage_1_1Glyph.html#add70123a08d594e4cfb627a03ae8daad">yage::Glyph::bottom_left_</a></div><div class="ttdeci">Vertex bottom_left_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:38</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_af8b705cdad7ceefa902f3be620ac8632"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">yage::SpriteBatch::end</a></div><div class="ttdeci">void end()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:56</div></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_acf88f98ccc7ce8effd2acfded27b6af0"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#acf88f98ccc7ce8effd2acfded27b6af0">yage::SpriteBatch::draw</a></div><div class="ttdeci">void draw(const glm::vec4 &amp;destination_rect, const glm::vec4 &amp;uv_rect, GLuint texture, const Colour &amp;colour, float depth)</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:78</div></div>
+<div class="ttc" id="structyage_1_1details_1_1RenderBatch_html_abf26b15420f34052270a1204d89ee687"><div class="ttname"><a href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">yage::details::RenderBatch::texture</a></div><div class="ttdeci">GLuint texture</div><div class="ttdef"><b>Definition:</b> spritebatch.h:29</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_af8b705cdad7ceefa902f3be620ac8632"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#af8b705cdad7ceefa902f3be620ac8632">yage::SpriteBatch::end</a></div><div class="ttdeci">void end()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:72</div></div>
<div class="ttc" id="structyage_1_1Vertex_html"><div class="ttname"><a href="structyage_1_1Vertex.html">yage::Vertex</a></div><div class="ttdef"><b>Definition:</b> vertex.h:49</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html"><div class="ttname"><a href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></div><div class="ttdef"><b>Definition:</b> spritebatch.h:70</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a8979cbe2f07cf12cf537a2bd88df99a2"><div class="ttname"><a href="classyage_1_1Glyph.html#a8979cbe2f07cf12cf537a2bd88df99a2">yage::Glyph::bottom_right</a></div><div class="ttdeci">Vertex bottom_right() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:49</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a4e21cc3bc27fbfaf1b6a15362b664027"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a4e21cc3bc27fbfaf1b6a15362b664027">yage::SpriteBatch::createVertexArray</a></div><div class="ttdeci">void createVertexArray()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:112</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_af6293aac69e1124199297e5b921a4872"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">yage::SpriteBatch::begin</a></div><div class="ttdeci">void begin()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:49</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a71c5c3381928153e3eb2f67461b76a2d"><div class="ttname"><a href="classyage_1_1Glyph.html#a71c5c3381928153e3eb2f67461b76a2d">yage::Glyph::top_left_</a></div><div class="ttdeci">Vertex top_left_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:35</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_aa94ec682d592c86e2c08560919d675a1"><div class="ttname"><a href="classyage_1_1Glyph.html#aa94ec682d592c86e2c08560919d675a1">yage::Glyph::bottom_left</a></div><div class="ttdeci">Vertex bottom_left() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:50</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a195c4aca60815d413c65dce99389282d"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch::render</a></div><div class="ttdeci">void render()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:93</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_a91752b58fc10fb037658f27c9338627c"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">yage::details::Glyph::Glyph</a></div><div class="ttdeci">Glyph(GLuint texture_i, float depth_i, const Vertex &amp;top_left_i, const Vertex &amp;top_right_i, const Vertex &amp;bottom_right_i, const Vertex &amp;bottom_left_i)</div><div class="ttdef"><b>Definition:</b> spritebatch.h:47</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html"><div class="ttname"><a href="classyage_1_1SpriteBatch.html">yage::SpriteBatch</a></div><div class="ttdef"><b>Definition:</b> spritebatch.h:59</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_aba58f02d34ba363ab3435e2328e4bfcc"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">yage::details::Glyph::texture</a></div><div class="ttdeci">GLuint texture</div><div class="ttdef"><b>Definition:</b> spritebatch.h:40</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_af6293aac69e1124199297e5b921a4872"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#af6293aac69e1124199297e5b921a4872">yage::SpriteBatch::begin</a></div><div class="ttdeci">void begin()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:65</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_ac42b2ed4a9179c38196953ed32bfa056"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">yage::details::Glyph::bottom_left</a></div><div class="ttdeci">Vertex bottom_left</div><div class="ttdef"><b>Definition:</b> spritebatch.h:45</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_a195c4aca60815d413c65dce99389282d"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a195c4aca60815d413c65dce99389282d">yage::SpriteBatch::render</a></div><div class="ttdeci">void render()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:108</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_a9de1d469f98aa0411f8073fdc3aa39ed"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">yage::details::Glyph::bottom_right</a></div><div class="ttdeci">Vertex bottom_right</div><div class="ttdef"><b>Definition:</b> spritebatch.h:44</div></div>
<div class="ttc" id="classyage_1_1SpriteBatch_html_a1b365d89c096d7fa138e1c7091f1d737"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a1b365d89c096d7fa138e1c7091f1d737">yage::SpriteBatch::operator=</a></div><div class="ttdeci">SpriteBatch &amp; operator=(const SpriteBatch &amp;)=delete</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a19ae31e594b33bb1ad3bc1763cdba38f"><div class="ttname"><a href="classyage_1_1Glyph.html#a19ae31e594b33bb1ad3bc1763cdba38f">yage::Glyph::Glyph</a></div><div class="ttdeci">Glyph(GLuint texture, float depth, const Vertex &amp;top_left, const Vertex &amp;top_right, const Vertex &amp;bottom_right, const Vertex &amp;bottom_left)</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:19</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a56e335f07826ca61ba680981d46b043c"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a56e335f07826ca61ba680981d46b043c">yage::SpriteBatch::vbo_</a></div><div class="ttdeci">GLuint vbo_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:76</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_ab27b92a62dcebccae673a7d8d0c15704"><div class="ttname"><a href="classyage_1_1Glyph.html#ab27b92a62dcebccae673a7d8d0c15704">yage::Glyph::depth_</a></div><div class="ttdeci">float depth_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:34</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_aff7e5f873fe2900dc2f4ce8fcf2b3944"><div class="ttname"><a href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">yage::RenderBatch::offset</a></div><div class="ttdeci">GLint offset() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:65</div></div>
-<div class="ttc" id="vertex_8h_html"><div class="ttname"><a href="vertex_8h.html">vertex.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_ad12ecf32cf9f9244afa7e9ad15b4e78f"><div class="ttname"><a href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">yage::RenderBatch::SpriteBatch</a></div><div class="ttdeci">friend SpriteBatch</div><div class="ttdef"><b>Definition:</b> spritebatch.h:55</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_ae3e74abbf722aba0197b64d8f61d928c"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#ae3e74abbf722aba0197b64d8f61d928c">yage::SpriteBatch::createRenderBatches</a></div><div class="ttdeci">void createRenderBatches()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:150</div></div>
-<div class="ttc" id="matrix_8h_html"><div class="ttname"><a href="matrix_8h.html">matrix.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a2efbe49c2307601731416d615ac415c8"><div class="ttname"><a href="classyage_1_1Glyph.html#a2efbe49c2307601731416d615ac415c8">yage::Glyph::texture_</a></div><div class="ttdeci">GLuint texture_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:33</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a7b8b85a8044d751cfa29135690c23ff9"><div class="ttname"><a href="classyage_1_1Glyph.html#a7b8b85a8044d751cfa29135690c23ff9">yage::Glyph::depth</a></div><div class="ttdeci">float depth() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:46</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a6240a88991e31b2fc8ed5dccfc362234"><div class="ttname"><a href="classyage_1_1Glyph.html#a6240a88991e31b2fc8ed5dccfc362234">yage::Glyph::bottom_right_</a></div><div class="ttdeci">Vertex bottom_right_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:37</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a6e01d11880a841b153e950aa8307b1a5"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">yage::SpriteBatch::NUM_VERTICES</a></div><div class="ttdeci">static const int NUM_VERTICES</div><div class="ttdef"><b>Definition:</b> spritebatch.h:73</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_af06239e2779d49eb6e915980a0aac941"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#af06239e2779d49eb6e915980a0aac941">yage::SpriteBatch::draw</a></div><div class="ttdeci">void draw(const yage::Vector4f &amp;destination_rect, const yage::Vector4f &amp;uv_rect, GLuint texture, const Colour &amp;colour, float depth)</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:62</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a00a06cc5f4bd47c2d5003cf2e3d7a6c1"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a00a06cc5f4bd47c2d5003cf2e3d7a6c1">yage::SpriteBatch::vao_</a></div><div class="ttdeci">GLuint vao_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:77</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a0d5bfd4874a5d29c96a3d22f45543eb2"><div class="ttname"><a href="classyage_1_1Glyph.html#a0d5bfd4874a5d29c96a3d22f45543eb2">yage::Glyph::texture</a></div><div class="ttdeci">GLuint texture() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:45</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_abf057ffe5fd9b7c35256dad147391008"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#abf057ffe5fd9b7c35256dad147391008">yage::SpriteBatch::render_batches_</a></div><div class="ttdeci">std::vector&lt; RenderBatch &gt; render_batches_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:80</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_a0ca8f0d0df0eeb22e8fc6fceebb96200"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a0ca8f0d0df0eeb22e8fc6fceebb96200">yage::SpriteBatch::glyphs_</a></div><div class="ttdeci">std::vector&lt; Glyph &gt; glyphs_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:78</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_afda50a8a2a6c9ffd1b9d962fae223f8a"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">yage::SpriteBatch::SpriteBatch</a></div><div class="ttdeci">SpriteBatch()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:33</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_a129b5fa960e1acc85650ce06b10905e7"><div class="ttname"><a href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">yage::RenderBatch::offset_</a></div><div class="ttdeci">GLint offset_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:59</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_a4dd2989e7b2a6d58dea6c85a9a1ed80d"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">yage::details::Glyph::top_left</a></div><div class="ttdeci">Vertex top_left</div><div class="ttdef"><b>Definition:</b> spritebatch.h:42</div></div>
+<div class="ttc" id="structyage_1_1details_1_1RenderBatch_html_a48f630fdb7c1a3f4eecd05996b560844"><div class="ttname"><a href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">yage::details::RenderBatch::RenderBatch</a></div><div class="ttdeci">RenderBatch(GLint offset_i, GLsizei num_vertices_i, GLuint texture_i)</div><div class="ttdef"><b>Definition:</b> spritebatch.h:31</div></div>
+<div class="ttc" id="structyage_1_1details_1_1RenderBatch_html_a7f58b6967f0a68aa5624e0504c78a422"><div class="ttname"><a href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">yage::details::RenderBatch::offset</a></div><div class="ttdeci">GLint offset</div><div class="ttdef"><b>Definition:</b> spritebatch.h:27</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_a6e01d11880a841b153e950aa8307b1a5"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#a6e01d11880a841b153e950aa8307b1a5">yage::SpriteBatch::NUM_VERTICES</a></div><div class="ttdeci">static const int NUM_VERTICES</div><div class="ttdef"><b>Definition:</b> spritebatch.h:62</div></div>
+<div class="ttc" id="structyage_1_1details_1_1RenderBatch_html"><div class="ttname"><a href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></div><div class="ttdef"><b>Definition:</b> spritebatch.h:26</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_afda50a8a2a6c9ffd1b9d962fae223f8a"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#afda50a8a2a6c9ffd1b9d962fae223f8a">yage::SpriteBatch::SpriteBatch</a></div><div class="ttdeci">SpriteBatch()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:25</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_ae5398583bd0b4c1d6b334bf3902903d9"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">yage::details::Glyph::depth</a></div><div class="ttdeci">float depth</div><div class="ttdef"><b>Definition:</b> spritebatch.h:41</div></div>
<div class="ttc" id="structyage_1_1Colour_html"><div class="ttname"><a href="structyage_1_1Colour.html">yage::Colour</a></div><div class="ttdef"><b>Definition:</b> vertex.h:26</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_a6af4f3f64abd1a6dc1e74ebafbb4e47e"><div class="ttname"><a href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">yage::RenderBatch::num_vertices</a></div><div class="ttdeci">GLsizei num_vertices() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:66</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a9db1936e683cafe3b6ef72f63b3241fa"><div class="ttname"><a href="classyage_1_1Glyph.html#a9db1936e683cafe3b6ef72f63b3241fa">yage::Glyph::top_right_</a></div><div class="ttdeci">Vertex top_right_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:36</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_ad1cfc404c74ee3d838e9cd12a8c1962d"><div class="ttname"><a href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">yage::RenderBatch::texture</a></div><div class="ttdeci">GLuint texture() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:67</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_adea6570f196b203a4d6e07ad66738c9a"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#adea6570f196b203a4d6e07ad66738c9a">yage::SpriteBatch::sortGlyphs</a></div><div class="ttdeci">void sortGlyphs()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:188</div></div>
-<div class="ttc" id="classyage_1_1Vector4_html"><div class="ttname"><a href="classyage_1_1Vector4.html">yage::Vector4</a></div><div class="ttdoc">4D Vector class </div><div class="ttdef"><b>Definition:</b> matrix.h:376</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html"><div class="ttname"><a href="classyage_1_1Glyph.html">yage::Glyph</a></div><div class="ttdoc">Glyph with information of the texture. </div><div class="ttdef"><b>Definition:</b> spritebatch.h:30</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_a160bf0e089d392d26fd50935263762ba"><div class="ttname"><a href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">yage::RenderBatch::num_vertices_</a></div><div class="ttdeci">GLsizei num_vertices_</div><div class="ttdef"><b>Definition:</b> spritebatch.h:58</div></div>
-<div class="ttc" id="classyage_1_1RenderBatch_html_a4a3a3180c63c51178871648d4c8e6853"><div class="ttname"><a href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">yage::RenderBatch::RenderBatch</a></div><div class="ttdeci">RenderBatch(GLint offset, GLsizei num_vertices, GLuint texture)</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:28</div></div>
-<div class="ttc" id="classyage_1_1SpriteBatch_html_afa26d86730be23aa5e0c8c4a9d67001a"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a">yage::SpriteBatch::~SpriteBatch</a></div><div class="ttdeci">~SpriteBatch()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:38</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a8e54b98d17907e0088360416fe978e1f"><div class="ttname"><a href="classyage_1_1Glyph.html#a8e54b98d17907e0088360416fe978e1f">yage::Glyph::top_left</a></div><div class="ttdeci">Vertex top_left() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:47</div></div>
-<div class="ttc" id="classyage_1_1Glyph_html_a4930084a1071cd3274b2aa885f26ecec"><div class="ttname"><a href="classyage_1_1Glyph.html#a4930084a1071cd3274b2aa885f26ecec">yage::Glyph::top_right</a></div><div class="ttdeci">Vertex top_right() const </div><div class="ttdef"><b>Definition:</b> spritebatch.h:48</div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html_a503ba9786cf0fe3535e968b607a001da"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">yage::details::Glyph::top_right</a></div><div class="ttdeci">Vertex top_right</div><div class="ttdef"><b>Definition:</b> spritebatch.h:43</div></div>
+<div class="ttc" id="batch_8h_html"><div class="ttname"><a href="batch_8h.html">batch.h</a></div></div>
+<div class="ttc" id="structyage_1_1details_1_1Glyph_html"><div class="ttname"><a href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></div><div class="ttdoc">Glyph with information of the texture. </div><div class="ttdef"><b>Definition:</b> spritebatch.h:39</div></div>
+<div class="ttc" id="structyage_1_1details_1_1RenderBatch_html_a27ed6f3911a6d7c8c2b6b4e5a5889b29"><div class="ttname"><a href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">yage::details::RenderBatch::num_vertices</a></div><div class="ttdeci">GLsizei num_vertices</div><div class="ttdef"><b>Definition:</b> spritebatch.h:28</div></div>
+<div class="ttc" id="classyage_1_1SpriteBatch_html_afa26d86730be23aa5e0c8c4a9d67001a"><div class="ttname"><a href="classyage_1_1SpriteBatch.html#afa26d86730be23aa5e0c8c4a9d67001a">yage::SpriteBatch::~SpriteBatch</a></div><div class="ttdeci">~SpriteBatch()</div><div class="ttdef"><b>Definition:</b> spritebatch.cpp:55</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritebatch_8h.html">spritebatch.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_059f34b87ae2c2af887b23a7e5e8e88f.html">render</a></li><li class="navelem"><a class="el" href="spritebatch_8h.html">spritebatch.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritesheet_8cpp.html b/spritesheet_8cpp.html
index 56b458f2..7826d488 100644
--- a/spritesheet_8cpp.html
+++ b/spritesheet_8cpp.html
@@ -129,7 +129,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -137,7 +138,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritesheet_8cpp.html">spritesheet.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritesheet_8h.html b/spritesheet_8h.html
index 769854b9..2255ba6e 100644
--- a/spritesheet_8h.html
+++ b/spritesheet_8h.html
@@ -116,7 +116,7 @@ $(document).ready(function(){initNavTree('spritesheet_8h.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
<code>#include &lt;rapidjson/reader.h&gt;</code><br/>
<code>#include &lt;map&gt;</code><br/>
<code>#include &lt;string&gt;</code><br/>
@@ -145,7 +145,8 @@ details::Coordinate &gt;&#160;</td><td class="memItemRight" valign="bottom"><a c
<tr class="separator:a035f63ad1a3114ada8157ed4182521c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -153,7 +154,7 @@ details::Coordinate &gt;&#160;</td><td class="memItemRight" valign="bottom"><a c
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritesheet_8h.html">spritesheet.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/spritesheet_8h_source.html b/spritesheet_8h_source.html
index 16283907..a0834764 100644
--- a/spritesheet_8h_source.html
+++ b/spritesheet_8h_source.html
@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('spritesheet_8h_source.html','');});
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef YAGE_SPRITESHEET_H</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_SPRITESHEET_H</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture_8h.html">texture.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../data/texture.h&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;rapidjson/reader.h&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
@@ -153,10 +153,10 @@ $(document).ready(function(){initNavTree('spritesheet_8h_source.html','');});
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::string <a class="code" href="classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9">fileContent</a>(std::string jsonFileName) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8"> 58</a></span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">texture_</a>;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3"> 59</a></span>&#160; <a class="code" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a> <a class="code" href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">fileLocations_</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> texture_;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a> fileLocations_;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a> <a class="code" href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">parseJson</a>(<span class="keywordtype">int</span> &amp;width, <span class="keywordtype">int</span> &amp;height,</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">details::SpriteMap</a> parseJson(<span class="keywordtype">int</span> &amp;width, <span class="keywordtype">int</span> &amp;height,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; std::string jsonContent) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;};</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
@@ -168,9 +168,7 @@ $(document).ready(function(){initNavTree('spritesheet_8h_source.html','');});
<div class="ttc" id="classyage_1_1SpriteSheet_html_a73db999ab17c4846f036eb47470176f6"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#a73db999ab17c4846f036eb47470176f6">yage::SpriteSheet::SpriteSheet</a></div><div class="ttdeci">SpriteSheet(std::string pngFileName, std::string jsonFileName)</div><div class="ttdef"><b>Definition:</b> spritesheet.cpp:28</div></div>
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html_a0b3a6d9aa1d5b846ad7ebc11bc77c629"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html#a0b3a6d9aa1d5b846ad7ebc11bc77c629">yage::details::Coordinate::Coordinate</a></div><div class="ttdeci">Coordinate()=default</div></div>
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html_aa1a9203c0a9cd929f333bd99af634adc"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html#aa1a9203c0a9cd929f333bd99af634adc">yage::details::Coordinate::x</a></div><div class="ttdeci">int x</div><div class="ttdef"><b>Definition:</b> spritesheet.h:32</div></div>
-<div class="ttc" id="texture_8h_html"><div class="ttname"><a href="texture_8h.html">texture.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="namespaceyage_1_1details_html_a035f63ad1a3114ada8157ed4182521c9"><div class="ttname"><a href="namespaceyage_1_1details.html#a035f63ad1a3114ada8157ed4182521c9">yage::details::SpriteMap</a></div><div class="ttdeci">std::map&lt; std::string, details::Coordinate &gt; SpriteMap</div><div class="ttdef"><b>Definition:</b> spritesheet.h:45</div></div>
-<div class="ttc" id="classyage_1_1SpriteSheet_html_a8094499cceedc9cb3b15bfe0520db6b8"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#a8094499cceedc9cb3b15bfe0520db6b8">yage::SpriteSheet::texture_</a></div><div class="ttdeci">Texture texture_</div><div class="ttdef"><b>Definition:</b> spritesheet.h:58</div></div>
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html_aed145c923c95f852a8fb3abde8e346c0"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html#aed145c923c95f852a8fb3abde8e346c0">yage::details::Coordinate::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> spritesheet.h:34</div></div>
<div class="ttc" id="classyage_1_1SpriteSheet_html_a2734c2e7b8bdfc9090d240c070ee55c0"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#a2734c2e7b8bdfc9090d240c070ee55c0">yage::SpriteSheet::sprite</a></div><div class="ttdeci">void sprite(std::string spriteName) const </div></div>
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html_a23585afbdaa9bb742353a4c90878a941"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html#a23585afbdaa9bb742353a4c90878a941">yage::details::Coordinate::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> spritesheet.h:35</div></div>
@@ -178,15 +176,13 @@ $(document).ready(function(){initNavTree('spritesheet_8h_source.html','');});
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html">yage::details::Coordinate</a></div><div class="ttdef"><b>Definition:</b> spritesheet.h:31</div></div>
<div class="ttc" id="structyage_1_1details_1_1Coordinate_html_a6d54c056ec7bd3c7ed1c6a226c2cf508"><div class="ttname"><a href="structyage_1_1details_1_1Coordinate.html#a6d54c056ec7bd3c7ed1c6a226c2cf508">yage::details::Coordinate::y</a></div><div class="ttdeci">int y</div><div class="ttdef"><b>Definition:</b> spritesheet.h:33</div></div>
<div class="ttc" id="classyage_1_1SpriteSheet_html_a50a04ebc989dbc63b0aa6d873da5ccd9"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#a50a04ebc989dbc63b0aa6d873da5ccd9">yage::SpriteSheet::fileContent</a></div><div class="ttdeci">std::string fileContent(std::string jsonFileName) const </div><div class="ttdef"><b>Definition:</b> spritesheet.cpp:41</div></div>
-<div class="ttc" id="classyage_1_1SpriteSheet_html_ae012ec12cbc2fe09b08cfc38ce2e2a98"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#ae012ec12cbc2fe09b08cfc38ce2e2a98">yage::SpriteSheet::parseJson</a></div><div class="ttdeci">details::SpriteMap parseJson(int &amp;width, int &amp;height, std::string jsonContent) const </div><div class="ttdef"><b>Definition:</b> spritesheet.cpp:51</div></div>
-<div class="ttc" id="classyage_1_1SpriteSheet_html_a8b8a3e6fd58943e44e04d6bfc8c243a3"><div class="ttname"><a href="classyage_1_1SpriteSheet.html#a8b8a3e6fd58943e44e04d6bfc8c243a3">yage::SpriteSheet::fileLocations_</a></div><div class="ttdeci">details::SpriteMap fileLocations_</div><div class="ttdef"><b>Definition:</b> spritesheet.h:59</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="spritesheet_8h.html">spritesheet.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:16 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/stb__image_8cpp.html b/stb__image_8cpp.html
new file mode 100644
index 00000000..0cd64a95
--- /dev/null
+++ b/stb__image_8cpp.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/core/stb_image.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('stb__image_8cpp.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle">
+<div class="title">stb_image.cpp File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="stb__image_8h_source.html">stb_image.h</a>&quot;</code><br/>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a18372412ad2fc3ce1e3240b3cf0efe78"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78">STB_IMAGE_IMPLEMENTATION</a></td></tr>
+<tr class="separator:a18372412ad2fc3ce1e3240b3cf0efe78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a18372412ad2fc3ce1e3240b3cf0efe78"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define STB_IMAGE_IMPLEMENTATION</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="stb__image_8cpp.html">stb_image.cpp</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/stb__image_8cpp.js b/stb__image_8cpp.js
new file mode 100644
index 00000000..97bc2d98
--- /dev/null
+++ b/stb__image_8cpp.js
@@ -0,0 +1,4 @@
+var stb__image_8cpp =
+[
+ [ "STB_IMAGE_IMPLEMENTATION", "stb__image_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78", null ]
+]; \ No newline at end of file
diff --git a/stb__image_8h.html b/stb__image_8h.html
new file mode 100644
index 00000000..acbaba9e
--- /dev/null
+++ b/stb__image_8h.html
@@ -0,0 +1,1492 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/core/stb_image.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('stb__image_8h.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">stb_image.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br/>
+</div>
+<p><a href="stb__image_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:aed6cd14a3bf678808c4c179e808866aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa">STBI_VERSION</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:aed6cd14a3bf678808c4c179e808866aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2d9ec9850cd12aefe7641b456266a4c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a>&#160;&#160;&#160;extern</td></tr>
+<tr class="separator:a2d9ec9850cd12aefe7641b456266a4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a28eb51a1512ce382ee50f20e1d04d50d"><td class="memItemLeft" align="right" valign="top">typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a></td></tr>
+<tr class="separator:a28eb51a1512ce382ee50f20e1d04d50d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a648037d4c55689328ba08c8f5d293df2"><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a></td></tr>
+<tr class="separator:a648037d4c55689328ba08c8f5d293df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a06fc87d81c62e9abb8790b6e5713c55b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br/>
+&#160;&#160;<a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029">STBI_default</a> = 0,
+<a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">STBI_grey</a> = 1,
+<a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">STBI_grey_alpha</a> = 2,
+<a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a> = 3,
+<br/>
+&#160;&#160;<a class="el" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293">STBI_rgb_alpha</a> = 4
+<br/>
+ }</td></tr>
+<tr class="separator:a06fc87d81c62e9abb8790b6e5713c55b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:acae25d31bfae29d75482f07fecf2935f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stbi_load_from_memory</a> (<a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:acae25d31bfae29d75482f07fecf2935f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95ebc5c42c1a753200be8d465e933af7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stbi_load_from_callbacks</a> (<a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a95ebc5c42c1a753200be8d465e933af7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aefdc7387857a14894bbf321e9ea4f048"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stbi_load</a> (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:aefdc7387857a14894bbf321e9ea4f048"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9994764695597161e8f3776e97caa99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stbi_load_from_file</a> (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:aa9994764695597161e8f3776e97caa99"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad30fd870ed2138ce8f38c9dd29b2f76a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stbi_load_16_from_memory</a> (<a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:ad30fd870ed2138ce8f38c9dd29b2f76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82bcc0957b6a4ebfdfa3d7f04fbaed18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stbi_load_16_from_callbacks</a> (<a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a82bcc0957b6a4ebfdfa3d7f04fbaed18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a58b6bcd805afa1bdb14f988dd37fee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stbi_load_16</a> (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a8a58b6bcd805afa1bdb14f988dd37fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ca2591f0987284129e82bf9dbcf7c6c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stbi_load_from_file_16</a> (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a9ca2591f0987284129e82bf9dbcf7c6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5d47fb76ce1e34eb0729ad932c9c48e2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stbi_loadf_from_memory</a> (<a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a5d47fb76ce1e34eb0729ad932c9c48e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e7fd261af79ecef2208df3a6cc806bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stbi_loadf_from_callbacks</a> (<a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:a6e7fd261af79ecef2208df3a6cc806bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af4f17acd30945a75901fdc022f90575f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stbi_loadf</a> (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:af4f17acd30945a75901fdc022f90575f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace82446ecd7b5c760cde062179660f46"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stbi_loadf_from_file</a> (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</td></tr>
+<tr class="separator:ace82446ecd7b5c760cde062179660f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab18889e43518d6b4421b705782bb1b5e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stbi_hdr_to_ldr_gamma</a> (float gamma)</td></tr>
+<tr class="separator:ab18889e43518d6b4421b705782bb1b5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae21cc1184eeb5cc814699f1ed62c5258"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stbi_hdr_to_ldr_scale</a> (float scale)</td></tr>
+<tr class="separator:ae21cc1184eeb5cc814699f1ed62c5258"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1feccdcf726dcc6b5502e3efa85b7dbb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stbi_ldr_to_hdr_gamma</a> (float gamma)</td></tr>
+<tr class="separator:a1feccdcf726dcc6b5502e3efa85b7dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af946583656a362a316b40c0421c20561"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stbi_ldr_to_hdr_scale</a> (float scale)</td></tr>
+<tr class="separator:af946583656a362a316b40c0421c20561"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0e94f316fe1848f632517ca3c11d077"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stbi_is_hdr_from_callbacks</a> (<a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *clbk, void *user)</td></tr>
+<tr class="separator:af0e94f316fe1848f632517ca3c11d077"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5cbc6f5cbb3b2d0d87ee959fcee9d23e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stbi_is_hdr_from_memory</a> (<a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *buffer, int len)</td></tr>
+<tr class="separator:a5cbc6f5cbb3b2d0d87ee959fcee9d23e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae70f9a302f7e87fd971075e7f758d55c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stbi_is_hdr</a> (char const *filename)</td></tr>
+<tr class="separator:ae70f9a302f7e87fd971075e7f758d55c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf10d41631e1e9214fde1688bdbd8524"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stbi_is_hdr_from_file</a> (FILE *f)</td></tr>
+<tr class="separator:aaf10d41631e1e9214fde1688bdbd8524"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa874b3ba909f3281d499894909678336"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stbi_failure_reason</a> (void)</td></tr>
+<tr class="separator:aa874b3ba909f3281d499894909678336"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3e11bb44412a7ba348acfbad09caacb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stbi_image_free</a> (void *retval_from_stbi_load)</td></tr>
+<tr class="separator:ad3e11bb44412a7ba348acfbad09caacb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acfef077febce3bc3f1f339de478f3315"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stbi_info_from_memory</a> (<a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *buffer, int len, int *x, int *y, int *comp)</td></tr>
+<tr class="separator:acfef077febce3bc3f1f339de478f3315"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86291c64cb663f41a34647d5e1abf363"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stbi_info_from_callbacks</a> (<a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *clbk, void *user, int *x, int *y, int *comp)</td></tr>
+<tr class="separator:a86291c64cb663f41a34647d5e1abf363"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aede708cca1304520b2afcf4d5eb61d70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stbi_info</a> (char const *filename, int *x, int *y, int *comp)</td></tr>
+<tr class="separator:aede708cca1304520b2afcf4d5eb61d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28abedef4a0a93909332080df6be0021"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stbi_info_from_file</a> (FILE *f, int *x, int *y, int *comp)</td></tr>
+<tr class="separator:a28abedef4a0a93909332080df6be0021"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3f02e0053e1c8d08a3ed436e6a82c7c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stbi_set_unpremultiply_on_load</a> (int flag_true_if_should_unpremultiply)</td></tr>
+<tr class="separator:a3f02e0053e1c8d08a3ed436e6a82c7c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23525ef2b882f3de426b47ecf8d9151b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stbi_convert_iphone_png_to_rgb</a> (int flag_true_if_should_convert)</td></tr>
+<tr class="separator:a23525ef2b882f3de426b47ecf8d9151b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab89c177fc52f1bb2dc1c05e48129a0a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stbi_set_flip_vertically_on_load</a> (int flag_true_if_should_flip)</td></tr>
+<tr class="separator:ab89c177fc52f1bb2dc1c05e48129a0a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaaa17a529bec51403cc23dc2e7c36d79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stbi_zlib_decode_malloc_guesssize</a> (const char *buffer, int len, int initial_size, int *outlen)</td></tr>
+<tr class="separator:aaaa17a529bec51403cc23dc2e7c36d79"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a038b0e741859a482b8b9d60167e54d27"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stbi_zlib_decode_malloc_guesssize_headerflag</a> (const char *buffer, int len, int initial_size, int *outlen, int parse_header)</td></tr>
+<tr class="separator:a038b0e741859a482b8b9d60167e54d27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4919b67b12e0e3acc5301f185ca77e2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stbi_zlib_decode_malloc</a> (const char *buffer, int len, int *outlen)</td></tr>
+<tr class="separator:a4919b67b12e0e3acc5301f185ca77e2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8447830c49bc17f8491e12c1f0ded48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stbi_zlib_decode_buffer</a> (char *obuffer, int olen, const char *ibuffer, int ilen)</td></tr>
+<tr class="separator:ae8447830c49bc17f8491e12c1f0ded48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7fbd65c83495f13f22469fe493775739"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stbi_zlib_decode_noheader_malloc</a> (const char *buffer, int len, int *outlen)</td></tr>
+<tr class="separator:a7fbd65c83495f13f22469fe493775739"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d12efc011adfff7521f3b924feb0b0e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stbi_zlib_decode_noheader_buffer</a> (char *obuffer, int olen, const char *ibuffer, int ilen)</td></tr>
+<tr class="separator:a0d12efc011adfff7521f3b924feb0b0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="aed6cd14a3bf678808c4c179e808866aa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define STBI_VERSION&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2d9ec9850cd12aefe7641b456266a4c2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define STBIDEF&#160;&#160;&#160;extern</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="a28eb51a1512ce382ee50f20e1d04d50d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned char <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a648037d4c55689328ba08c8f5d293df2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned short <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">anonymous enum</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029"></a>STBI_default</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa"></a>STBI_grey</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8"></a>STBI_grey_alpha</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf"></a>STBI_rgb</em>&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293"></a>STBI_rgb_alpha</em>&#160;</td><td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a23525ef2b882f3de426b47ecf8d9151b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_convert_iphone_png_to_rgb </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flag_true_if_should_convert</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa874b3ba909f3281d499894909678336"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> const char* stbi_failure_reason </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab18889e43518d6b4421b705782bb1b5e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_hdr_to_ldr_gamma </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>gamma</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae21cc1184eeb5cc814699f1ed62c5258"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_hdr_to_ldr_scale </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>scale</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad3e11bb44412a7ba348acfbad09caacb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_image_free </td>
+ <td>(</td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>retval_from_stbi_load</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aede708cca1304520b2afcf4d5eb61d70"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_info </td>
+ <td>(</td>
+ <td class="paramtype">char const *&#160;</td>
+ <td class="paramname"><em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>comp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a86291c64cb663f41a34647d5e1abf363"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_info_from_callbacks </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *&#160;</td>
+ <td class="paramname"><em>clbk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>comp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a28abedef4a0a93909332080df6be0021"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_info_from_file </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>comp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="acfef077febce3bc3f1f339de478f3315"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_info_from_memory </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>comp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae70f9a302f7e87fd971075e7f758d55c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_is_hdr </td>
+ <td>(</td>
+ <td class="paramtype">char const *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af0e94f316fe1848f632517ca3c11d077"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_is_hdr_from_callbacks </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *&#160;</td>
+ <td class="paramname"><em>clbk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>user</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aaf10d41631e1e9214fde1688bdbd8524"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_is_hdr_from_file </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>f</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5cbc6f5cbb3b2d0d87ee959fcee9d23e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_is_hdr_from_memory </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1feccdcf726dcc6b5502e3efa85b7dbb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_ldr_to_hdr_gamma </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>gamma</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af946583656a362a316b40c0421c20561"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_ldr_to_hdr_scale </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>scale</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aefdc7387857a14894bbf321e9ea4f048"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi_load </td>
+ <td>(</td>
+ <td class="paramtype">char const *&#160;</td>
+ <td class="paramname"><em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8a58b6bcd805afa1bdb14f988dd37fee"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a>* stbi_load_16 </td>
+ <td>(</td>
+ <td class="paramtype">char const *&#160;</td>
+ <td class="paramname"><em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a82bcc0957b6a4ebfdfa3d7f04fbaed18"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a>* stbi_load_16_from_callbacks </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *&#160;</td>
+ <td class="paramname"><em>clbk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad30fd870ed2138ce8f38c9dd29b2f76a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a>* stbi_load_16_from_memory </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a95ebc5c42c1a753200be8d465e933af7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi_load_from_callbacks </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *&#160;</td>
+ <td class="paramname"><em>clbk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa9994764695597161e8f3776e97caa99"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi_load_from_file </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9ca2591f0987284129e82bf9dbcf7c6c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a>* stbi_load_from_file_16 </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="acae25d31bfae29d75482f07fecf2935f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi_load_from_memory </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af4f17acd30945a75901fdc022f90575f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float* stbi_loadf </td>
+ <td>(</td>
+ <td class="paramtype">char const *&#160;</td>
+ <td class="paramname"><em>filename</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6e7fd261af79ecef2208df3a6cc806bb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float* stbi_loadf_from_callbacks </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> const *&#160;</td>
+ <td class="paramname"><em>clbk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>user</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ace82446ecd7b5c760cde062179660f46"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float* stbi_loadf_from_file </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5d47fb76ce1e34eb0729ad932c9c48e2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> float* stbi_loadf_from_memory </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> const *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>channels_in_file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>desired_channels</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab89c177fc52f1bb2dc1c05e48129a0a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_set_flip_vertically_on_load </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flag_true_if_should_flip</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3f02e0053e1c8d08a3ed436e6a82c7c9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> void stbi_set_unpremultiply_on_load </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flag_true_if_should_unpremultiply</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae8447830c49bc17f8491e12c1f0ded48"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_zlib_decode_buffer </td>
+ <td>(</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>obuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>olen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>ibuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ilen</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4919b67b12e0e3acc5301f185ca77e2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char* stbi_zlib_decode_malloc </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>outlen</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aaaa17a529bec51403cc23dc2e7c36d79"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char* stbi_zlib_decode_malloc_guesssize </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>initial_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>outlen</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a038b0e741859a482b8b9d60167e54d27"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char* stbi_zlib_decode_malloc_guesssize_headerflag </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>initial_size</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>outlen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>parse_header</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0d12efc011adfff7521f3b924feb0b0e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> int stbi_zlib_decode_noheader_buffer </td>
+ <td>(</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>obuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>olen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>ibuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ilen</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7fbd65c83495f13f22469fe493775739"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> char* stbi_zlib_decode_noheader_malloc </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>len</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>outlen</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="stb__image_8h.html">stb_image.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/stb__image_8h.js b/stb__image_8h.js
new file mode 100644
index 00000000..73799cb9
--- /dev/null
+++ b/stb__image_8h.js
@@ -0,0 +1,48 @@
+var stb__image_8h =
+[
+ [ "stbi_io_callbacks", "structstbi__io__callbacks.html", "structstbi__io__callbacks" ],
+ [ "STBI_VERSION", "stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa", null ],
+ [ "STBIDEF", "stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2", null ],
+ [ "stbi_uc", "stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d", null ],
+ [ "stbi_us", "stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2", null ],
+ [ "STBI_default", "stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029", null ],
+ [ "STBI_grey", "stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa", null ],
+ [ "STBI_grey_alpha", "stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8", null ],
+ [ "STBI_rgb", "stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf", null ],
+ [ "STBI_rgb_alpha", "stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293", null ],
+ [ "stbi_convert_iphone_png_to_rgb", "stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b", null ],
+ [ "stbi_failure_reason", "stb__image_8h.html#aa874b3ba909f3281d499894909678336", null ],
+ [ "stbi_hdr_to_ldr_gamma", "stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e", null ],
+ [ "stbi_hdr_to_ldr_scale", "stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258", null ],
+ [ "stbi_image_free", "stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb", null ],
+ [ "stbi_info", "stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70", null ],
+ [ "stbi_info_from_callbacks", "stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363", null ],
+ [ "stbi_info_from_file", "stb__image_8h.html#a28abedef4a0a93909332080df6be0021", null ],
+ [ "stbi_info_from_memory", "stb__image_8h.html#acfef077febce3bc3f1f339de478f3315", null ],
+ [ "stbi_is_hdr", "stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c", null ],
+ [ "stbi_is_hdr_from_callbacks", "stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077", null ],
+ [ "stbi_is_hdr_from_file", "stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524", null ],
+ [ "stbi_is_hdr_from_memory", "stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e", null ],
+ [ "stbi_ldr_to_hdr_gamma", "stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb", null ],
+ [ "stbi_ldr_to_hdr_scale", "stb__image_8h.html#af946583656a362a316b40c0421c20561", null ],
+ [ "stbi_load", "stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048", null ],
+ [ "stbi_load_16", "stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee", null ],
+ [ "stbi_load_16_from_callbacks", "stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18", null ],
+ [ "stbi_load_16_from_memory", "stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a", null ],
+ [ "stbi_load_from_callbacks", "stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7", null ],
+ [ "stbi_load_from_file", "stb__image_8h.html#aa9994764695597161e8f3776e97caa99", null ],
+ [ "stbi_load_from_file_16", "stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c", null ],
+ [ "stbi_load_from_memory", "stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f", null ],
+ [ "stbi_loadf", "stb__image_8h.html#af4f17acd30945a75901fdc022f90575f", null ],
+ [ "stbi_loadf_from_callbacks", "stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb", null ],
+ [ "stbi_loadf_from_file", "stb__image_8h.html#ace82446ecd7b5c760cde062179660f46", null ],
+ [ "stbi_loadf_from_memory", "stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2", null ],
+ [ "stbi_set_flip_vertically_on_load", "stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4", null ],
+ [ "stbi_set_unpremultiply_on_load", "stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9", null ],
+ [ "stbi_zlib_decode_buffer", "stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48", null ],
+ [ "stbi_zlib_decode_malloc", "stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e", null ],
+ [ "stbi_zlib_decode_malloc_guesssize", "stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79", null ],
+ [ "stbi_zlib_decode_malloc_guesssize_headerflag", "stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27", null ],
+ [ "stbi_zlib_decode_noheader_buffer", "stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e", null ],
+ [ "stbi_zlib_decode_noheader_malloc", "stb__image_8h.html#a7fbd65c83495f13f22469fe493775739", null ]
+]; \ No newline at end of file
diff --git a/stb__image_8h_source.html b/stb__image_8h_source.html
new file mode 100644
index 00000000..44f4834d
--- /dev/null
+++ b/stb__image_8h_source.html
@@ -0,0 +1,7347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: yage/core/stb_image.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('stb__image_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">stb_image.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="stb__image_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* stb_image - v2.16 - public domain image loader - http://nothings.org/stb_image.h</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> no warranty implied; use at your own risk</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Do this:</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> #define STB_IMAGE_IMPLEMENTATION</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> before you include this file in *one* C or C++ file to create the implementation.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> // i.e. it should look like this:</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> #include ...</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> #include ...</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> #include ...</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> #define STB_IMAGE_IMPLEMENTATION</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> #include &quot;stb_image.h&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> You can #define STBI_ASSERT(x) before the #include to avoid using assert.h.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> QUICK NOTES:</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> Primarily of interest to game developers and other people who can</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> avoid problematic images and only need the trivial interface</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> JPEG baseline &amp; progressive (12 bpc/arithmetic not supported, same as stock IJG lib)</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> PNG 1/2/4/8/16-bit-per-channel</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> TGA (not sure what subset, if a subset)</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> BMP non-1bpp, non-RLE</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> PSD (composited view only, no extra channels, 8/16 bit-per-channel)</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> GIF (*comp always reports as 4-channel)</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> HDR (radiance rgbE format)</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> PIC (Softimage PIC)</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> PNM (PPM and PGM binary only)</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> Animated GIF still needs a proper API, but here&#39;s one way to do it:</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> http://gist.github.com/urraka/685d9a6340b26b830d49</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> - decode from memory or through FILE (define STBI_NO_STDIO to remove code)</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> - decode from arbitrary I/O callbacks</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON)</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> Full documentation under &quot;DOCUMENTATION&quot; below.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">LICENSE</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> See end of file for license information.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">RECENT REVISION HISTORY:</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> RGB-format JPEG; remove white matting in PSD;</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> allocate large structures on the stack;</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> correct channel count for PNG &amp; BMP</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> 2.10 (2016-01-22) avoid warning introduced in 2.09</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> See end of file for full revision history.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> ============================ Contributors =========================</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> Image formats Extensions, features</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info)</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> Nicolas Schulz (hdr, psd) Martin &quot;SpartanJ&quot; Golini (stbi_info)</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> Jonathan Dummer (tga) James &quot;moose2000&quot; Brown (iPhone PNG)</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> Jean-Marc Lienher (gif) Ben &quot;Disch&quot; Wenger (io callbacks)</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG)</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip)</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD)</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> github:urraka (animated gif) Junggon Kim (PNM comments)</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> Daniel Gibson (16-bit TGA)</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> socks-the-fox (16-bit PNG)</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> Jeremy Sawicki (handle all ImageNet JPGs)</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> Optimizations &amp; bugfixes</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> Fabian &quot;ryg&quot; Giesen</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> Arseny Kapoulkine</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> John-Mark Allen</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> Bug &amp; warning fixes</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> Marc LeBlanc David Woo Guillaume George Martins Mozeiko</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> Christpher Lloyd Jerry Jansson Joseph Thomson Phil Jordan</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> Dave Moore Roy Eltham Hayaki Saito Nathan Reed</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> Won Chun Luke Graham Johan Duparc Nick Verigakis</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> the Horde3D community Thomas Ruf Ronny Chevalier Baldur Karlsson</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> Janez Zemva John Bartholomew Michal Cichon github:rlyeh</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> Jonathan Blow Ken Hamada Tero Hanninen github:romigrou</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> Laurent Gomila Cort Stratton Sergio Gonzalez github:svdijk</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> Aruelien Pocheville Thibault Reuille Cass Everitt github:snagar</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> Ryamond Barbiero Paul Du Bois Engin Manap github:Zelex</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> Michaelangel007@github Philipp Wiesemann Dale Weiler github:grim210</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> Oriol Ferrer Mesia Josh Tobin Matthew Gregan github:sammyhw</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> Blazej Dariusz Roszkowski Gregory Mullen github:phprus</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> Christian Floisand Kevin Schmidt github:poppolopoppo</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#ifndef STBI_INCLUDE_STB_IMAGE_H</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_INCLUDE_STB_IMAGE_H</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">// DOCUMENTATION</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">// Limitations:</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">// - no 16-bit-per-channel PNG</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// - no 12-bit-per-channel JPEG</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">// - no JPEGs with arithmetic coding</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">// - no 1-bit BMP</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// - GIF always returns *comp=4</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// Basic usage (see HDR discussion below for HDR usage):</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// int x,y,n;</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">// unsigned char *data = stbi_load(filename, &amp;x, &amp;y, &amp;n, 0);</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment">// // ... process data if not NULL ...</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">// // ... x = width, y = height, n = # 8-bit components per pixel ...</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment">// // ... replace &#39;0&#39; with &#39;1&#39;..&#39;4&#39; to force that many components per pixel</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment">// // ... but &#39;n&#39; will always be the number that it would have been if you said 0</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">// stbi_image_free(data)</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// Standard parameters:</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">// int *x -- outputs image width in pixels</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// int *y -- outputs image height in pixels</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">// int *channels_in_file -- outputs # of image components in image file</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">// int desired_channels -- if non-zero, # of image components requested in result</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">// The return value from an image loader is an &#39;unsigned char *&#39; which points</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// to the pixel data, or NULL on an allocation failure or if the image is</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels,</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// with each pixel consisting of N interleaved 8-bit components; the first</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">// pixel pointed to is top-left-most in the image. There is no padding between</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// image scanlines or between pixels, regardless of format. The number of</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// components N is &#39;desired_channels&#39; if desired_channels is non-zero, or</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">// *channels_in_file otherwise. If desired_channels is non-zero,</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">// *channels_in_file has the number of components that _would_ have been</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">// output otherwise. E.g. if you set desired_channels to 4, you will always</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// get RGBA output, but you can check *channels_in_file to see if it&#39;s trivially</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">// opaque because e.g. there were only 3 channels in the source image.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">// An output image with N components has the following components interleaved</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">// in this order in each pixel:</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">// N=#comp components</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// 1 grey</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">// 2 grey, alpha</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">// 3 red, green, blue</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// 4 red, green, blue, alpha</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// If image loading fails for any reason, the return value will be NULL,</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// and *x, *y, *channels_in_file will be unchanged. The function</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// stbi_failure_reason() can be queried for an extremely brief, end-user</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment">// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment">// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">// more user-friendly ones.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">// Philosophy</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// stb libraries are designed with the following priorities:</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">// 1. easy to use</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// 2. easy to maintain</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">// 3. good performance</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment">// Sometimes I let &quot;good performance&quot; creep up in priority over &quot;easy to maintain&quot;,</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// and for best performance I may provide less-easy-to-use APIs that give higher</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">// performance, in addition to the easy to use ones. Nevertheless, it&#39;s important</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment">// to keep in mind that from the standpoint of you, a client of this library,</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all.</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment">// Some secondary priorities arise directly from the first two, some of which</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">// make more explicit reasons why performance can&#39;t be emphasized.</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// - Portable (&quot;ease of use&quot;)</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// - Small source code footprint (&quot;easy to maintain&quot;)</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// - No dependencies (&quot;ease of use&quot;)</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">// I/O callbacks</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment">// I/O callbacks allow you to read from arbitrary sources, like packaged</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment">// files or some other source. Data read from callbacks are processed</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">// through a small internal buffer (currently 128 bytes) to try to reduce</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">// overhead.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">// The three functions you must define are &quot;read&quot; (reads some bytes of data),</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">// &quot;skip&quot; (skips some bytes of data), &quot;eof&quot; (reports if the stream is at the end).</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// SIMD support</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment">// The JPEG decoder will try to automatically use SIMD kernels on x86 when</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment">// supported by the compiler. For ARM Neon support, you must explicitly</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">// request it.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment">// (The old do-it-yourself SIMD API is no longer supported in the current</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">// code.)</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">// On x86, SSE2 will automatically be used when available based on a run-time</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment">// test; if not, the generic C versions are used as a fall-back. On ARM targets,</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment">// the typical path is to have separate builds for NEON and non-NEON devices</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment">// (at least this is true for iOS and Android). Therefore, the NEON support is</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">// toggled by a build flag: define STBI_NEON to get NEON loops.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment">// If for some reason you do not want to use any of SIMD code, or if</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">// you have issues compiling it, you can disable it entirely by</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">// defining STBI_NO_SIMD.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">// HDR image support (disable by defining STBI_NO_HDR)</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// stb_image now supports loading HDR images in general, and currently</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">// the Radiance .HDR file format, although the support is provided</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment">// generically. You can still load any file through the existing interface;</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment">// if you attempt to load an HDR file, it will be automatically remapped to</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1;</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment">// both of these constants can be reconfigured through this interface:</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// stbi_hdr_to_ldr_gamma(2.2f);</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">// stbi_hdr_to_ldr_scale(1.0f);</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// (note, do not use _inverse_ constants; stbi_image will invert them</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// appropriately).</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">// Additionally, there is a new, parallel interface for loading files as</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// (linear) floats to preserve the full dynamic range:</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">// float *data = stbi_loadf(filename, &amp;x, &amp;y, &amp;n, 0);</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">// If you load LDR images through this interface, those images will</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// be promoted to floating point values, run through the inverse of</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment">// constants corresponding to the above:</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// stbi_ldr_to_hdr_scale(1.0f);</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">// stbi_ldr_to_hdr_gamma(2.2f);</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">// Finally, given a filename (or an open file or memory block--see header</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">// file for details) containing image data, you can query for the &quot;most</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">// appropriate&quot; interface to use (that is, whether the image is HDR or</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// not), using:</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment">// stbi_is_hdr(char *filename);</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment">// iPhone PNG support:</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">// By default we convert iphone-formatted PNGs back to RGB, even though</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// they are internally encoded differently. You can disable this conversion</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">// by by calling stbi_convert_iphone_png_to_rgb(0), in which case</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">// you will always just get the native iphone &quot;format&quot; through (which</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">// is BGR stored in RGB).</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment">// pixel to remove any premultiplied alpha *only* if the image file explicitly</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">// says there&#39;s premultiplied data (currently only happens in iPhone images,</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">// and only if iPhone convert-to-rgb processing is on).</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">// ===========================================================================</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment">// ADDITIONAL CONFIGURATION</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">// - You can suppress implementation of any of the decoders to reduce</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment">// your code footprint by #defining one or more of the following</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment">// symbols before creating the implementation.</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment">// STBI_NO_JPEG</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment">// STBI_NO_PNG</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">// STBI_NO_BMP</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment">// STBI_NO_PSD</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">// STBI_NO_TGA</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">// STBI_NO_GIF</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment">// STBI_NO_HDR</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">// STBI_NO_PIC</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment">// STBI_NO_PNM (.ppm and .pgm)</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment">// - You can request *only* certain decoders and suppress all other ones</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment">// (this will be more forward-compatible, as addition of new decoders</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">// doesn&#39;t require you to disable them explicitly):</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment">// STBI_ONLY_JPEG</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment">// STBI_ONLY_PNG</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment">// STBI_ONLY_BMP</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">// STBI_ONLY_PSD</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment">// STBI_ONLY_TGA</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment">// STBI_ONLY_GIF</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment">// STBI_ONLY_HDR</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment">// STBI_ONLY_PIC</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment">// STBI_ONLY_PNM (.ppm and .pgm)</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment">// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment">// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#endif // STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="stb__image_8h.html#aed6cd14a3bf678808c4c179e808866aa"> 308</a></span>&#160;<span class="preprocessor">#define STBI_VERSION 1</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="keyword">enum</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;{</div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029"> 312</a></span>&#160; <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029">STBI_default</a> = 0, <span class="comment">// only used for desired_channels</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa"> 314</a></span>&#160; <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">STBI_grey</a> = 1,</div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8"> 315</a></span>&#160; <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">STBI_grey_alpha</a> = 2,</div>
+<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf"> 316</a></span>&#160; <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a> = 3,</div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293"> 317</a></span>&#160; <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293">STBI_rgb_alpha</a> = 4</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;};</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
+<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d"> 320</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2"> 321</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a>;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor">#ifdef STB_IMAGE_STATIC</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBIDEF static</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2"> 330</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBIDEF extern</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">// PRIMARY API - works on images of any type</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment">// load image by filename, open file, or memory buffer</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="structstbi__io__callbacks.html"> 342</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div>
+<div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82"> 344</a></span>&#160; int (*read) (<span class="keywordtype">void</span> *user,<span class="keywordtype">char</span> *data,<span class="keywordtype">int</span> size); <span class="comment">// fill &#39;data&#39; with &#39;size&#39; bytes. return number of bytes actually read</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83"> 345</a></span>&#160; void (*skip) (<span class="keywordtype">void</span> *user,<span class="keywordtype">int</span> n); <span class="comment">// skip the next &#39;n&#39; bytes, or &#39;unget&#39; the last -n bytes if negative</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177"> 346</a></span>&#160; int (*eof) (<span class="keywordtype">void</span> *user); <span class="comment">// returns nonzero if we are at end of file/data</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;} <a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment">// 8-bits-per-channel interface</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stbi_load_from_memory</a> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len , <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stbi_load_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk , <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stbi_load</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stbi_load_from_file</a> (FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment">// for stbi_load_from_file, file pointer is left pointing immediately after image</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment">// 16-bits-per-channel interface</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stbi_load_16_from_memory</a> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stbi_load_16_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stbi_load_16</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stbi_load_from_file_16</a>(FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment">// float-per-channel interface</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor"></span> <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stbi_loadf_from_memory</a> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stbi_loadf_from_callbacks</a> (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"></span> <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stbi_loadf</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stbi_loadf_from_file</a> (FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels);</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"></span> <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stbi_hdr_to_ldr_gamma</a>(<span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stbi_hdr_to_ldr_scale</a>(<span class="keywordtype">float</span> scale);</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor">#endif // STBI_NO_HDR</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="preprocessor"></span> <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stbi_ldr_to_hdr_gamma</a>(<span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stbi_ldr_to_hdr_scale</a>(<span class="keywordtype">float</span> scale);</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor">#endif // STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment">// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stbi_is_hdr_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user);</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stbi_is_hdr_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len);</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stbi_is_hdr</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename);</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stbi_is_hdr_from_file</a>(FILE *f);</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="preprocessor">#endif // STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment">// get a VERY brief reason for failure</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment">// NOT THREADSAFE</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stbi_failure_reason</a> (<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment">// free the loaded image -- this is just free()</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stbi_image_free</a> (<span class="keywordtype">void</span> *retval_from_stbi_load);</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment">// get image dimensions &amp; components without fully decoding</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stbi_info_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stbi_info_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stbi_info</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stbi_info_from_file</a> (FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment">// for image formats that explicitly notate that they have premultiplied alpha,</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment">// we just return the colors as stored in the file. set this flag to force</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment">// unpremultiplication. results are undefined if the unpremultiply overflow.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stbi_set_unpremultiply_on_load</a>(<span class="keywordtype">int</span> flag_true_if_should_unpremultiply);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="comment">// indicate whether we should process iphone images back to canonical format,</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="comment">// or just pass them through &quot;as-is&quot;</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stbi_convert_iphone_png_to_rgb</a>(<span class="keywordtype">int</span> flag_true_if_should_convert);</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="comment">// flip the image vertically, so the first pixel in the output array is the bottom left</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stbi_set_flip_vertically_on_load</a>(<span class="keywordtype">int</span> flag_true_if_should_flip);</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="comment">// ZLIB client - used by PNG, available for other purposes</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stbi_zlib_decode_malloc_guesssize</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> initial_size, <span class="keywordtype">int</span> *outlen);</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stbi_zlib_decode_malloc_guesssize_headerflag</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> initial_size, <span class="keywordtype">int</span> *outlen, <span class="keywordtype">int</span> parse_header);</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stbi_zlib_decode_malloc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *outlen);</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stbi_zlib_decode_buffer</a>(<span class="keywordtype">char</span> *obuffer, <span class="keywordtype">int</span> olen, <span class="keyword">const</span> <span class="keywordtype">char</span> *ibuffer, <span class="keywordtype">int</span> ilen);</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stbi_zlib_decode_noheader_malloc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *outlen);</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stbi_zlib_decode_noheader_buffer</a>(<span class="keywordtype">char</span> *obuffer, <span class="keywordtype">int</span> olen, <span class="keyword">const</span> <span class="keywordtype">char</span> *ibuffer, <span class="keywordtype">int</span> ilen);</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"></span><span class="preprocessor">#endif // STBI_INCLUDE_STB_IMAGE_H</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#ifdef STB_IMAGE_IMPLEMENTATION</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor"> || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor"> || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor"> || defined(STBI_ONLY_ZLIB)</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_JPEG</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_JPEG</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_PNG</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_PNG</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_BMP</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_BMP</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_PSD</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_PSD</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_TGA</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_TGA</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_GIF</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_GIF</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_HDR</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_HDR</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_PIC</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_PIC</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_ONLY_PNM</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI_NO_PNM</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#if defined(STBI_NO_PNG) &amp;&amp; !defined(STBI_SUPPORT_ZLIB) &amp;&amp; !defined(STBI_NO_ZLIB)</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_NO_ZLIB</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span> <span class="comment">// ptrdiff_t on osx</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor">#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;math.h&gt;</span> <span class="comment">// ldexp</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#ifndef STBI_ASSERT</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;assert.h&gt;</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#define STBI_ASSERT(x) assert(x)</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#ifndef _MSC_VER</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifdef __cplusplus</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi_inline inline</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #else</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi_inline</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi_inline __forceinline</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> stbi__uint16;</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> stbi__int16;</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stbi__uint32;</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> stbi__int32;</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="keyword">typedef</span> uint16_t stbi__uint16;</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="keyword">typedef</span> int16_t stbi__int16;</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="keyword">typedef</span> uint32_t stbi__uint32;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="keyword">typedef</span> int32_t stbi__int32;</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment">// should produce compiler error if size is wrong</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> validate_uint32[<span class="keyword">sizeof</span>(stbi__uint32)==4 ? 1 : -1];</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_NOTUSED(v) (void)(v)</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_NOTUSED(v) (void)sizeof(v)</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_HAS_LROTL</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor">#ifdef STBI_HAS_LROTL</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi_lrot(x,y) _lrotl(x,y)</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi_lrot(x,y) (((x) &lt;&lt; (y)) | ((x) &gt;&gt; (32 - (y))))</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="preprocessor">#if defined(STBI_MALLOC) &amp;&amp; defined(STBI_FREE) &amp;&amp; (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED))</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="preprocessor"></span><span class="comment">// ok</span></div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor">#elif !defined(STBI_MALLOC) &amp;&amp; !defined(STBI_FREE) &amp;&amp; !defined(STBI_REALLOC) &amp;&amp; !defined(STBI_REALLOC_SIZED)</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor"></span><span class="comment">// ok</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#error &quot;Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED).&quot;</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#ifndef STBI_MALLOC</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_MALLOC(sz) malloc(sz)</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_REALLOC(p,newsz) realloc(p,newsz)</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_FREE(p) free(p)</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#ifndef STBI_REALLOC_SIZED</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz)</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="comment">// x86/x64 detection</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#if defined(__x86_64__) || defined(_M_X64)</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI__X64_TARGET</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#elif defined(__i386) || defined(_M_IX86)</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI__X86_TARGET</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor">#if defined(__GNUC__) &amp;&amp; defined(STBI__X86_TARGET) &amp;&amp; !defined(__SSE2__) &amp;&amp; !defined(STBI_NO_SIMD)</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor"></span><span class="comment">// gcc doesn&#39;t support sse2 intrinsics unless you compile with -msse2,</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment">// which in turn means it gets to use SSE2 everywhere. This is unfortunate,</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment">// but previous attempts to provide the SSE2 functions with runtime</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment">// detection caused numerous issues. The way architecture extensions are</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment">// exposed in GCC/Clang is, sadly, not really suited for one-file libs.</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment">// New behavior: if compiled with -msse2, we use SSE2 without any</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment">// detection; if not, we don&#39;t use it at all.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor">#define STBI_NO_SIMD</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="preprocessor">#if defined(__MINGW32__) &amp;&amp; defined(STBI__X86_TARGET) &amp;&amp; !defined(STBI_MINGW_ENABLE_SSE2) &amp;&amp; !defined(STBI_NO_SIMD)</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor"></span><span class="comment">// Note that __MINGW32__ doesn&#39;t actually mean 32-bit, so we have to avoid STBI__X64_TARGET</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment">// Windows ABI and VC++ as well as Windows DLLs don&#39;t maintain that invariant.</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment">// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment">// simultaneously enabling &quot;-mstackrealign&quot;.</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment">// See https://github.com/nothings/stb/issues/81 for more information.</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment">// So default to no SSE2 on 32-bit MinGW. If you&#39;ve read this far and added</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment">// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor">#define STBI_NO_SIMD</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="preprocessor">#if !defined(STBI_NO_SIMD) &amp;&amp; (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET))</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_SSE2</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;emmintrin.h&gt;</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor">#if _MSC_VER &gt;= 1400 // not VC6</span></div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;intrin.h&gt;</span> <span class="comment">// __cpuid</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__cpuid3(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;{</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">int</span> info[4];</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; __cpuid(info,1);</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">return</span> info[3];</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;}</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__cpuid3(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;{</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordtype">int</span> res;</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; __asm {</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; mov eax,1</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; cpuid</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; mov res,edx</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="preprocessor">#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__sse2_available(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;{</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordtype">int</span> info3 = stbi__cpuid3();</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> ((info3 &gt;&gt; 26) &amp; 1) != 0;</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;}</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="preprocessor">#else // assume GCC-style if not VC++</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__sse2_available(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="comment">// If we&#39;re even attempting to compile this on GCC/Clang, that means</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// -msse2 is on, which means the compiler is allowed to use SSE2</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// instructions at will, and so are we.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;}</div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment">// ARM NEON</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="preprocessor">#if defined(STBI_NO_SIMD) &amp;&amp; defined(STBI_NEON)</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef STBI_NEON</span></div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="preprocessor">#ifdef STBI_NEON</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;arm_neon.h&gt;</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment">// assume GCC or Clang on ARM targets</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="preprocessor">#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="preprocessor">#ifndef STBI_SIMD_ALIGN</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI_SIMD_ALIGN(type, name) type name</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment">// stbi__context struct and start_xxx functions</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment">// stbi__context structure is our basic context used by all images, so it</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment">// contains all the IO context, plus some basic image information</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;{</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; stbi__uint32 img_x, img_y;</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordtype">int</span> img_n, img_out_n;</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> io;</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordtype">void</span> *io_user_data;</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordtype">int</span> read_from_callbacks;</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">int</span> buflen;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> buffer_start[128];</div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *img_buffer, *img_buffer_end;</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *img_buffer_original, *img_buffer_original_end;</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;} stbi__context;</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__refill_buffer(stbi__context *s);</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment">// initialize a memory-decode context</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__start_mem(stbi__context *s, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len)</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;{</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; s-&gt;io.read = NULL;</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; s-&gt;read_from_callbacks = 0;</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; s-&gt;img_buffer = s-&gt;img_buffer_original = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer;</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; s-&gt;img_buffer_end = s-&gt;img_buffer_original_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer+len;</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment">// initialize a callback-based context</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__start_callbacks(stbi__context *s, <a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *c, <span class="keywordtype">void</span> *user)</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;{</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; s-&gt;io = *c;</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; s-&gt;io_user_data = user;</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; s-&gt;buflen = <span class="keyword">sizeof</span>(s-&gt;buffer_start);</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; s-&gt;read_from_callbacks = 1;</div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; s-&gt;img_buffer_original = s-&gt;buffer_start;</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; stbi__refill_buffer(s);</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; s-&gt;img_buffer_original_end = s-&gt;img_buffer_end;</div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;}</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__stdio_read(<span class="keywordtype">void</span> *user, <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> size)</div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;{</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">int</span>) fread(data,1,size,(FILE*) user);</div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;}</div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;</div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__stdio_skip(<span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;{</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; fseek((FILE*) user, n, SEEK_CUR);</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;}</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__stdio_eof(<span class="keywordtype">void</span> *user)</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;{</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> feof((FILE*) user);</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;}</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="keyword">static</span> <a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> stbi__stdio_callbacks =</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;{</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; stbi__stdio_read,</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; stbi__stdio_skip,</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; stbi__stdio_eof,</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;};</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__start_file(stbi__context *s, FILE *f)</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;{</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; stbi__start_callbacks(s, &amp;stbi__stdio_callbacks, (<span class="keywordtype">void</span> *) f);</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;}</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment">//static void stop_file(stbi__context *s) { }</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="preprocessor">#endif // !STBI_NO_STDIO</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__rewind(stbi__context *s)</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="comment">// conceptually rewind SHOULD rewind to the beginning of the stream,</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// but we just rewind to the beginning of the initial buffer, because</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">// we only use it after doing &#39;test&#39;, which only ever looks at at most 92 bytes</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; s-&gt;img_buffer = s-&gt;img_buffer_original;</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; s-&gt;img_buffer_end = s-&gt;img_buffer_original_end;</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;}</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="keyword">enum</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;{</div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; STBI_ORDER_RGB,</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; STBI_ORDER_BGR</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;};</div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;{</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordtype">int</span> bits_per_channel;</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordtype">int</span> num_channels;</div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordtype">int</span> channel_order;</div>
+<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;} stbi__result_info;</div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;<span class="preprocessor">#ifndef STBI_NO_JPEG</span></div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_test(stbi__context *s);</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__jpeg_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PNG</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__png_test(stbi__context *s);</div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__png_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__png_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="preprocessor">#ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bmp_test(stbi__context *s);</div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__bmp_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bmp_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="preprocessor">#ifndef STBI_NO_TGA</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__tga_test(stbi__context *s);</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__tga_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__tga_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PSD</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__psd_test(stbi__context *s);</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__psd_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri, <span class="keywordtype">int</span> bpc);</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__psd_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__hdr_test(stbi__context *s);</div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="keyword">static</span> <span class="keywordtype">float</span> *stbi__hdr_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__hdr_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PIC</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_test(stbi__context *s);</div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__pic_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;<span class="preprocessor">#ifndef STBI_NO_GIF</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_test(stbi__context *s);</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__gif_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PNM</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_test(stbi__context *s);</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__pnm_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri);</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp);</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="comment">// this is not threadsafe</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *stbi__g_failure_reason;</div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stbi_failure_reason</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;{</div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">return</span> stbi__g_failure_reason;</div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;}</div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__err(<span class="keyword">const</span> <span class="keywordtype">char</span> *str)</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;{</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; stbi__g_failure_reason = str;</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;}</div>
+<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__malloc(<span class="keywordtype">size_t</span> size)</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;{</div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> STBI_MALLOC(size);</div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;}</div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;</div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="comment">// stb_image uses ints pervasively, including for offset calculations.</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;<span class="comment">// therefore the largest decoded image size we can support with the</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;<span class="comment">// current code, even on 64-bit targets, is INT_MAX. this is not a</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;<span class="comment">// significant limitation for the intended use case.</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="comment">// we do, however, need to make sure our size calculations don&#39;t</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="comment">// overflow. hence a few helper functions for size calculations that</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;<span class="comment">// multiply integers together, making sure that they&#39;re non-negative</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<span class="comment">// and no overflow occurs.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="comment">// return 1 if the sum is valid, 0 on overflow.</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="comment">// negative terms are considered invalid.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__addsizes_valid(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;{</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (b &lt; 0) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// now 0 &lt;= b &lt;= INT_MAX, hence also</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="comment">// 0 &lt;= INT_MAX - b &lt;= INTMAX.</span></div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="comment">// And &quot;a + b &lt;= INT_MAX&quot; (which might overflow) is the</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="comment">// same as a &lt;= INT_MAX - b (no overflow)</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">return</span> a &lt;= INT_MAX - b;</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;}</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;</div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="comment">// returns 1 if the product is valid, 0 on overflow.</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="comment">// negative factors are considered invalid.</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__mul2sizes_valid(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b)</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;{</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (a &lt; 0 || b &lt; 0) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">if</span> (b == 0) <span class="keywordflow">return</span> 1; <span class="comment">// mul-by-0 is always safe</span></div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="comment">// portable way to check for no overflows in a*b</span></div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">return</span> a &lt;= INT_MAX/b;</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;}</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="comment">// returns 1 if &quot;a*b + add&quot; has no negative terms/factors and doesn&#39;t overflow</span></div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__mad2sizes_valid(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;{</div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span> stbi__mul2sizes_valid(a, b) &amp;&amp; stbi__addsizes_valid(a*b, add);</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;}</div>
+<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;<span class="comment">// returns 1 if &quot;a*b*c + add&quot; has no negative terms/factors and doesn&#39;t overflow</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__mad3sizes_valid(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> c, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;{</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">return</span> stbi__mul2sizes_valid(a, b) &amp;&amp; stbi__mul2sizes_valid(a*b, c) &amp;&amp;</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; stbi__addsizes_valid(a*b*c, add);</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;</div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="comment">// returns 1 if &quot;a*b*c*d + add&quot; has no negative terms/factors and doesn&#39;t overflow</span></div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__mad4sizes_valid(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> c, <span class="keywordtype">int</span> d, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;{</div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span> stbi__mul2sizes_valid(a, b) &amp;&amp; stbi__mul2sizes_valid(a*b, c) &amp;&amp;</div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; stbi__mul2sizes_valid(a*b*c, d) &amp;&amp; stbi__addsizes_valid(a*b*c*d, add);</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="comment">// mallocs with size overflow checking</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__malloc_mad2(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;{</div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (!stbi__mad2sizes_valid(a, b, add)) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> stbi__malloc(a*b + add);</div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__malloc_mad3(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> c, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;{</div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(a, b, c, add)) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">return</span> stbi__malloc(a*b*c + add);</div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;}</div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__malloc_mad4(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> c, <span class="keywordtype">int</span> d, <span class="keywordtype">int</span> add)</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;{</div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (!stbi__mad4sizes_valid(a, b, c, d, add)) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> stbi__malloc(a*b*c*d + add);</div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;}</div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;<span class="comment">// stbi__err - error</span></div>
+<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;<span class="comment">// stbi__errpf - error returning pointer to float</span></div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;<span class="comment">// stbi__errpuc - error returning pointer to unsigned char</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="preprocessor">#ifdef STBI_NO_FAILURE_STRINGS</span></div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi__err(x,y) 0</span></div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#elif defined(STBI_FAILURE_USERMSG)</span></div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi__err(x,y) stbi__err(y)</span></div>
+<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define stbi__err(x,y) stbi__err(x)</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;<span class="preprocessor">#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL))</span></div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL))</span></div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stbi_image_free</a>(<span class="keywordtype">void</span> *retval_from_stbi_load)</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;{</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; STBI_FREE(retval_from_stbi_load);</div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;}</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">float</span> *stbi__ldr_to_hdr(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *data, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> comp);</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__hdr_to_ldr(<span class="keywordtype">float</span> *data, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> comp);</div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__vertically_flip_on_load = 0;</div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stbi_set_flip_vertically_on_load</a>(<span class="keywordtype">int</span> flag_true_if_should_flip)</div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;{</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; stbi__vertically_flip_on_load = flag_true_if_should_flip;</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;}</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__load_main(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri, <span class="keywordtype">int</span> bpc)</div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;{</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; memset(ri, 0, <span class="keyword">sizeof</span>(*ri)); <span class="comment">// make sure it&#39;s initialized if we add new fields</span></div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; ri-&gt;bits_per_channel = 8; <span class="comment">// default is 8 so most paths don&#39;t have to be changed</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ri-&gt;channel_order = STBI_ORDER_RGB; <span class="comment">// all current input &amp; output are this, but this is here so we can add BGR order</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; ri-&gt;num_channels = 0;</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_JPEG</span></div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__jpeg_test(s)) <span class="keywordflow">return</span> stbi__jpeg_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_PNG</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__png_test(s)) <span class="keywordflow">return</span> stbi__png_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__bmp_test(s)) <span class="keywordflow">return</span> stbi__bmp_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_GIF</span></div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__gif_test(s)) <span class="keywordflow">return</span> stbi__gif_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_PSD</span></div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__psd_test(s)) <span class="keywordflow">return</span> stbi__psd_load(s,x,y,comp,req_comp, ri, bpc);</div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_PIC</span></div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__pic_test(s)) <span class="keywordflow">return</span> stbi__pic_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #ifndef STBI_NO_PNM</span></div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__pnm_test(s)) <span class="keywordflow">return</span> stbi__pnm_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__hdr_test(s)) {</div>
+<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordtype">float</span> *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_TGA</span></div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="preprocessor"></span> <span class="comment">// test tga last because it&#39;s a crappy test!</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (stbi__tga_test(s))</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">return</span> stbi__tga_load(s,x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;unknown image type&quot;</span>, <span class="stringliteral">&quot;Image not of any known type, or corrupt&quot;</span>);</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;}</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__convert_16_to_8(stbi__uint16 *orig, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h, <span class="keywordtype">int</span> channels)</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;{</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordtype">int</span> img_len = w * h * channels;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *reduced;</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; reduced = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc(img_len);</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">if</span> (reduced == NULL) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; img_len; ++i)</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; reduced[i] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)((orig[i] &gt;&gt; 8) &amp; 0xFF); <span class="comment">// top half of each byte is sufficient approx of 16-&gt;8 bit scaling</span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; STBI_FREE(orig);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">return</span> reduced;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;}</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="keyword">static</span> stbi__uint16 *stbi__convert_8_to_16(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *orig, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h, <span class="keywordtype">int</span> channels)</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;{</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordtype">int</span> img_len = w * h * channels;</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; stbi__uint16 *enlarged;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; enlarged = (stbi__uint16 *) stbi__malloc(img_len*2);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">if</span> (enlarged == NULL) <span class="keywordflow">return</span> (stbi__uint16 *) stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; img_len; ++i)</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; enlarged[i] = (stbi__uint16)((orig[i] &lt;&lt; 8) + orig[i]); <span class="comment">// replicate to high and low byte, maps 0-&gt;0, 255-&gt;0xffff</span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; STBI_FREE(orig);</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">return</span> enlarged;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;}</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__vertical_flip(<span class="keywordtype">void</span> *image, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h, <span class="keywordtype">int</span> bytes_per_pixel)</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;{</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordtype">int</span> row;</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordtype">size_t</span> bytes_per_row = (size_t)w * bytes_per_pixel;</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> temp[2048];</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *bytes = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *)image;</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">for</span> (row = 0; row &lt; (h&gt;&gt;1); row++) {</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *row0 = bytes + row*bytes_per_row;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *row1 = bytes + (h - row - 1)*bytes_per_row;</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">// swap row0 with row1</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordtype">size_t</span> bytes_left = bytes_per_row;</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">while</span> (bytes_left) {</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordtype">size_t</span> bytes_copy = (bytes_left &lt; <span class="keyword">sizeof</span>(temp)) ? bytes_left : <span class="keyword">sizeof</span>(temp);</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; memcpy(temp, row0, bytes_copy);</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; memcpy(row0, row1, bytes_copy);</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; memcpy(row1, temp, bytes_copy);</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; row0 += bytes_copy;</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; row1 += bytes_copy;</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; bytes_left -= bytes_copy;</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;}</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *stbi__load_and_postprocess_8bit(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;{</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; stbi__result_info ri;</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordtype">void</span> *result = stbi__load_main(s, x, y, comp, req_comp, &amp;ri, 8);</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">if</span> (result == NULL)</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">if</span> (ri.bits_per_channel != 8) {</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; STBI_ASSERT(ri.bits_per_channel == 16);</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; ri.bits_per_channel = 8;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="comment">// @TODO: move stbi__convert_format to here</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">if</span> (stbi__vertically_flip_on_load) {</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordtype">int</span> channels = req_comp ? req_comp : *comp;</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; stbi__vertical_flip(result, *x, *y, channels * <span class="keyword">sizeof</span>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>));</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) result;</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;}</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="keyword">static</span> stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;{</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; stbi__result_info ri;</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordtype">void</span> *result = stbi__load_main(s, x, y, comp, req_comp, &amp;ri, 16);</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span> (result == NULL)</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">if</span> (ri.bits_per_channel != 16) {</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; STBI_ASSERT(ri.bits_per_channel == 8);</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; result = stbi__convert_8_to_16((<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) result, *x, *y, req_comp == 0 ? *comp : req_comp);</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; ri.bits_per_channel = 16;</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; }</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="comment">// @TODO: move stbi__convert_format16 to here</span></div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="comment">// @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision</span></div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keywordflow">if</span> (stbi__vertically_flip_on_load) {</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordtype">int</span> channels = req_comp ? req_comp : *comp;</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; stbi__vertical_flip(result, *x, *y, channels * <span class="keyword">sizeof</span>(stbi__uint16));</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; }</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">return</span> (stbi__uint16 *) result;</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;}</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> stbi__float_postprocess(<span class="keywordtype">float</span> *result, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;{</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">if</span> (stbi__vertically_flip_on_load &amp;&amp; result != NULL) {</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordtype">int</span> channels = req_comp ? req_comp : *comp;</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; stbi__vertical_flip(result, *x, *y, channels * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;}</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="keyword">static</span> FILE *stbi__fopen(<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">char</span> <span class="keyword">const</span> *mode)</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;{</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; FILE *f;</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1400</span></div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (0 != fopen_s(&amp;f, filename, mode))</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; f=0;</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor"></span> f = fopen(filename, mode);</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> f;</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stbi_load</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;{</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; FILE *f = stbi__fopen(filename, <span class="stringliteral">&quot;rb&quot;</span>);</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *result;</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;can&#39;t fopen&quot;</span>, <span class="stringliteral">&quot;Unable to open file&quot;</span>);</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; result = <a class="code" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stbi_load_from_file</a>(f,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; fclose(f);</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stbi_load_from_file</a>(FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;{</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *result;</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; stbi__start_file(&amp;s,f);</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; result = stbi__load_and_postprocess_8bit(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">if</span> (result) {</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="comment">// need to &#39;unget&#39; all the characters in the IO buffer</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; fseek(f, - (<span class="keywordtype">int</span>) (s.img_buffer_end - s.img_buffer), SEEK_CUR);</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; }</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;}</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> stbi__uint16 *<a class="code" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stbi_load_from_file_16</a>(FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;{</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; stbi__uint16 *result;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; stbi__start_file(&amp;s,f);</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; result = stbi__load_and_postprocess_16bit(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (result) {</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="comment">// need to &#39;unget&#39; all the characters in the IO buffer</span></div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; fseek(f, - (<span class="keywordtype">int</span>) (s.img_buffer_end - s.img_buffer), SEEK_CUR);</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; }</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;}</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stbi_load_16</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;{</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; FILE *f = stbi__fopen(filename, <span class="stringliteral">&quot;rb&quot;</span>);</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; stbi__uint16 *result;</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> (<a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *) stbi__errpuc(<span class="stringliteral">&quot;can&#39;t fopen&quot;</span>, <span class="stringliteral">&quot;Unable to open file&quot;</span>);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; result = <a class="code" href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stbi_load_from_file_16</a>(f,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; fclose(f);</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;}</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="preprocessor">#endif </span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stbi_load_16_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels)</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;{</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; stbi__start_mem(&amp;s,buffer,len);</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">return</span> stbi__load_and_postprocess_16bit(&amp;s,x,y,channels_in_file,desired_channels);</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;}</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a> *<a class="code" href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stbi_load_16_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *channels_in_file, <span class="keywordtype">int</span> desired_channels)</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;{</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; stbi__start_callbacks(&amp;s, (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *)clbk, user);</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">return</span> stbi__load_and_postprocess_16bit(&amp;s,x,y,channels_in_file,desired_channels);</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;}</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stbi_load_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;{</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; stbi__start_mem(&amp;s,buffer,len);</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">return</span> stbi__load_and_postprocess_8bit(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;}</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<a class="code" href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stbi_load_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;{</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; stbi__start_callbacks(&amp;s, (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *) clbk, user);</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span> stbi__load_and_postprocess_8bit(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">float</span> *stbi__loadf_main(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;{</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data;</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__hdr_test(s)) {</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; stbi__result_info ri;</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordtype">float</span> *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &amp;ri);</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (hdr_data)</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; stbi__float_postprocess(hdr_data,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">return</span> hdr_data;</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; }</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;<span class="preprocessor"></span> data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">if</span> (data)</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;unknown image type&quot;</span>, <span class="stringliteral">&quot;Image not of any known type, or corrupt&quot;</span>);</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;}</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stbi_loadf_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;{</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; stbi__start_mem(&amp;s,buffer,len);</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">return</span> stbi__loadf_main(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;}</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stbi_loadf_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;{</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; stbi__start_callbacks(&amp;s, (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *) clbk, user);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> stbi__loadf_main(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;}</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stbi_loadf</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;{</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordtype">float</span> *result;</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; FILE *f = stbi__fopen(filename, <span class="stringliteral">&quot;rb&quot;</span>);</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;can&#39;t fopen&quot;</span>, <span class="stringliteral">&quot;Unable to open file&quot;</span>);</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; result = <a class="code" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stbi_loadf_from_file</a>(f,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; fclose(f);</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;}</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">float</span> *<a class="code" href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stbi_loadf_from_file</a>(FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;{</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; stbi__start_file(&amp;s,f);</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">return</span> stbi__loadf_main(&amp;s,x,y,comp,req_comp);</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;}</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="preprocessor">#endif // !STBI_NO_STDIO</span></div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="preprocessor">#endif // !STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="comment">// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is</span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="comment">// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="comment">// reports false!</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stbi_is_hdr_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len)</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;{</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="preprocessor"></span> stbi__context s;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; stbi__start_mem(&amp;s,buffer,len);</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">return</span> stbi__hdr_test(&amp;s);</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="preprocessor"> #else</span></div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="preprocessor"></span> STBI_NOTUSED(buffer);</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; STBI_NOTUSED(len);</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stbi_is_hdr</a> (<span class="keywordtype">char</span> <span class="keyword">const</span> *filename)</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;{</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; FILE *f = stbi__fopen(filename, <span class="stringliteral">&quot;rb&quot;</span>);</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordtype">int</span> result=0;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (f) {</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; result = <a class="code" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stbi_is_hdr_from_file</a>(f);</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; fclose(f);</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;}</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stbi_is_hdr_from_file</a>(FILE *f)</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;{</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="preprocessor"></span> stbi__context s;</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; stbi__start_file(&amp;s,f);</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> stbi__hdr_test(&amp;s);</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="preprocessor"> #else</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="preprocessor"></span> STBI_NOTUSED(f);</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="preprocessor">#endif // !STBI_NO_STDIO</span></div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stbi_is_hdr_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *clbk, <span class="keywordtype">void</span> *user)</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;{</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="preprocessor"></span> stbi__context s;</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; stbi__start_callbacks(&amp;s, (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *) clbk, user);</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">return</span> stbi__hdr_test(&amp;s);</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="preprocessor"> #else</span></div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="preprocessor"></span> STBI_NOTUSED(clbk);</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; STBI_NOTUSED(user);</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">float</span> stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stbi_ldr_to_hdr_gamma</a>(<span class="keywordtype">float</span> gamma) { stbi__l2h_gamma = gamma; }</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stbi_ldr_to_hdr_scale</a>(<span class="keywordtype">float</span> scale) { stbi__l2h_scale = scale; }</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="keyword">static</span> <span class="keywordtype">float</span> stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f;</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stbi_hdr_to_ldr_gamma</a>(<span class="keywordtype">float</span> gamma) { stbi__h2l_gamma_i = 1/gamma; }</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stbi_hdr_to_ldr_scale</a>(<span class="keywordtype">float</span> scale) { stbi__h2l_scale_i = 1/scale; }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment">// Common code used by all image loaders</span></div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="keyword">enum</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; STBI__SCAN_load=0,</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; STBI__SCAN_type,</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; STBI__SCAN_header</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;};</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__refill_buffer(stbi__context *s)</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;{</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordtype">int</span> n = (s-&gt;io.read)(s-&gt;io_user_data,(<span class="keywordtype">char</span>*)s-&gt;buffer_start,s-&gt;buflen);</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">if</span> (n == 0) {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="comment">// at end of file, treat same as if from memory, but need to handle case</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="comment">// where s-&gt;img_buffer isn&#39;t pointing to safe memory, e.g. 0-byte file</span></div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; s-&gt;read_from_callbacks = 0;</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; s-&gt;img_buffer = s-&gt;buffer_start;</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; s-&gt;img_buffer_end = s-&gt;buffer_start+1;</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; *s-&gt;img_buffer = 0;</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; s-&gt;img_buffer = s-&gt;buffer_start;</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; s-&gt;img_buffer_end = s-&gt;buffer_start + n;</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; }</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;}</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;stbi_inline <span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__get8(stbi__context *s)</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;{</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">if</span> (s-&gt;img_buffer &lt; s-&gt;img_buffer_end)</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keywordflow">return</span> *s-&gt;img_buffer++;</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (s-&gt;read_from_callbacks) {</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; stbi__refill_buffer(s);</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">return</span> *s-&gt;img_buffer++;</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;}</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__at_eof(stbi__context *s)</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;{</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="keywordflow">if</span> (s-&gt;io.read) {</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="keywordflow">if</span> (!(s-&gt;io.eof)(s-&gt;io_user_data)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="comment">// if feof() is true, check if buffer = end</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="comment">// special case: we&#39;ve only got the special 0 character at the end</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">if</span> (s-&gt;read_from_callbacks == 0) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; }</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">return</span> s-&gt;img_buffer &gt;= s-&gt;img_buffer_end;</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;}</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__skip(stbi__context *s, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;{</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <span class="keywordflow">if</span> (n &lt; 0) {</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; s-&gt;img_buffer = s-&gt;img_buffer_end;</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; }</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">if</span> (s-&gt;io.read) {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keywordtype">int</span> blen = (int) (s-&gt;img_buffer_end - s-&gt;img_buffer);</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keywordflow">if</span> (blen &lt; n) {</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; s-&gt;img_buffer = s-&gt;img_buffer_end;</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; (s-&gt;io.skip)(s-&gt;io_user_data, n - blen);</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; }</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; }</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; s-&gt;img_buffer += n;</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;}</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__getn(stbi__context *s, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *buffer, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;{</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordflow">if</span> (s-&gt;io.read) {</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordtype">int</span> blen = (int) (s-&gt;img_buffer_end - s-&gt;img_buffer);</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">if</span> (blen &lt; n) {</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordtype">int</span> res, count;</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; memcpy(buffer, s-&gt;img_buffer, blen);</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; count = (s-&gt;io.read)(s-&gt;io_user_data, (<span class="keywordtype">char</span>*) buffer + blen, n - blen);</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; res = (count == (n-blen));</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; s-&gt;img_buffer = s-&gt;img_buffer_end;</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">if</span> (s-&gt;img_buffer+n &lt;= s-&gt;img_buffer_end) {</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; memcpy(buffer, s-&gt;img_buffer, n);</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; s-&gt;img_buffer += n;</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;}</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__get16be(stbi__context *s)</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;{</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordtype">int</span> z = stbi__get8(s);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keywordflow">return</span> (z &lt;&lt; 8) + stbi__get8(s);</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;}</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="keyword">static</span> stbi__uint32 stbi__get32be(stbi__context *s)</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;{</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; stbi__uint32 z = stbi__get16be(s);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keywordflow">return</span> (z &lt;&lt; 16) + stbi__get16be(s);</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;}</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="preprocessor">#if defined(STBI_NO_BMP) &amp;&amp; defined(STBI_NO_TGA) &amp;&amp; defined(STBI_NO_GIF)</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="preprocessor"></span><span class="comment">// nothing</span></div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__get16le(stbi__context *s)</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;{</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="keywordtype">int</span> z = stbi__get8(s);</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keywordflow">return</span> z + (stbi__get8(s) &lt;&lt; 8);</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;}</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;<span class="preprocessor">#ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> stbi__uint32 stbi__get32le(stbi__context *s)</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;{</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; stbi__uint32 z = stbi__get16le(s);</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="keywordflow">return</span> z + (stbi__get16le(s) &lt;&lt; 16);</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;}</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;<span class="preprocessor">#define STBI__BYTECAST(x) ((stbi_uc) ((x) &amp; 255)) // truncate int to byte without warnings</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment">// generic converter from built-in img_n to req_comp</span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="comment">// individual types do this automatically as much as possible (e.g. jpeg</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="comment">// does all cases internally since it needs to colorspace convert anyway,</span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="comment">// and it never has alpha, so very few cases ). png can automatically</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="comment">// interleave an alpha=255 channel, but falls back to this for other cases</span></div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;<span class="comment">// assume data buffer is malloced, so malloc a new one and free that one</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="comment">// only failure mode is malloc failing</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__compute_y(<span class="keywordtype">int</span> r, <span class="keywordtype">int</span> g, <span class="keywordtype">int</span> b)</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;{</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) (((r*77) + (g*150) + (29*b)) &gt;&gt; 8);</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;}</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *stbi__convert_format(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> img_n, <span class="keywordtype">int</span> req_comp, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;{</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *good;</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">if</span> (req_comp == img_n) <span class="keywordflow">return</span> data;</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; STBI_ASSERT(req_comp &gt;= 1 &amp;&amp; req_comp &lt;= 4);</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; good = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) stbi__malloc_mad3(req_comp, x, y, 0);</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">if</span> (good == NULL) {</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; }</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; (int) y; ++j) {</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *src = data + j * x * img_n ;</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *dest = good + j * x * req_comp;</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;<span class="preprocessor"> #define STBI__COMBO(a,b) ((a)*8+(b))</span></div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i &gt;= 0; --i, src += a, dest += b)</span></div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;<span class="preprocessor"></span> <span class="comment">// convert source image with img_n components to one with req_comp components;</span></div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="comment">// avoid switch per pixel, so use switch per scanline and massive macros</span></div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">switch</span> (STBI__COMBO(img_n, req_comp)) {</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; STBI__CASE(2,1) { dest[0]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordflow">default</span>: STBI_ASSERT(0);</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; }</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;<span class="preprocessor"> #undef STBI__CASE</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;<span class="preprocessor"></span> }</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="keywordflow">return</span> good;</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;}</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;<span class="keyword">static</span> stbi__uint16 stbi__compute_y_16(<span class="keywordtype">int</span> r, <span class="keywordtype">int</span> g, <span class="keywordtype">int</span> b)</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;{</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">return</span> (stbi__uint16) (((r*77) + (g*150) + (29*b)) &gt;&gt; 8);</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;}</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="keyword">static</span> stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, <span class="keywordtype">int</span> img_n, <span class="keywordtype">int</span> req_comp, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;{</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; stbi__uint16 *good;</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keywordflow">if</span> (req_comp == img_n) <span class="keywordflow">return</span> data;</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; STBI_ASSERT(req_comp &gt;= 1 &amp;&amp; req_comp &lt;= 4);</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2);</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">if</span> (good == NULL) {</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keywordflow">return</span> (stbi__uint16 *) stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; }</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; (int) y; ++j) {</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; stbi__uint16 *src = data + j * x * img_n ;</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; stbi__uint16 *dest = good + j * x * req_comp;</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="preprocessor"> #define STBI__COMBO(a,b) ((a)*8+(b))</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i &gt;= 0; --i, src += a, dest += b)</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="preprocessor"></span> <span class="comment">// convert source image with img_n components to one with req_comp components;</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="comment">// avoid switch per pixel, so use switch per scanline and massive macros</span></div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordflow">switch</span> (STBI__COMBO(img_n, req_comp)) {</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; STBI__CASE(2,1) { dest[0]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">default</span>: STBI_ASSERT(0);</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="preprocessor"> #undef STBI__CASE</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="preprocessor"></span> }</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <span class="keywordflow">return</span> good;</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;}</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="preprocessor">#ifndef STBI_NO_LINEAR</span></div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">float</span> *stbi__ldr_to_hdr(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *data, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> comp)</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;{</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="keywordtype">int</span> i,k,n;</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordtype">float</span> *output;</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <span class="keywordflow">if</span> (!data) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; output = (<span class="keywordtype">float</span> *) stbi__malloc_mad4(x, y, comp, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), 0);</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">if</span> (output == NULL) { STBI_FREE(data); <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>); }</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; <span class="comment">// compute number of non-alpha components</span></div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (comp &amp; 1) n = comp; <span class="keywordflow">else</span> n = comp-1;</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; x*y; ++i) {</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; n; ++k) {</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale);</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; }</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">if</span> (k &lt; comp) output[i*comp + k] = data[i*comp+k]/255.0f;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; }</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <span class="keywordflow">return</span> output;</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;}</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__float2int(x) ((int) (x))</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__hdr_to_ldr(<span class="keywordtype">float</span> *data, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> comp)</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;{</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordtype">int</span> i,k,n;</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *output;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordflow">if</span> (!data) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; output = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(x, y, comp, 0);</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <span class="keywordflow">if</span> (output == NULL) { STBI_FREE(data); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>); }</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="comment">// compute number of non-alpha components</span></div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="keywordflow">if</span> (comp &amp; 1) n = comp; <span class="keywordflow">else</span> n = comp-1;</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; x*y; ++i) {</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; n; ++k) {</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <span class="keywordtype">float</span> z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f;</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="keywordflow">if</span> (z &lt; 0) z = 0;</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <span class="keywordflow">if</span> (z &gt; 255) z = 255;</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; output[i*comp + k] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) stbi__float2int(z);</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; }</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <span class="keywordflow">if</span> (k &lt; comp) {</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordtype">float</span> z = data[i*comp+k] * 255 + 0.5f;</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keywordflow">if</span> (z &lt; 0) z = 0;</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keywordflow">if</span> (z &gt; 255) z = 255;</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; output[i*comp + k] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) stbi__float2int(z);</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; }</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; }</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; STBI_FREE(data);</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="keywordflow">return</span> output;</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;}</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;<span class="comment">// &quot;baseline&quot; JPEG/JFIF decoder</span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="comment">// simple implementation</span></div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="comment">// - doesn&#39;t support delayed output of y-dimension</span></div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;<span class="comment">// - simple interface (only one output format: 8-bit interleaved RGB)</span></div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;<span class="comment">// - doesn&#39;t try to recover corrupt jpegs</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;<span class="comment">// - doesn&#39;t allow partial loading, loading multiple at once</span></div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;<span class="comment">// - still fast on x86 (copying globals into locals doesn&#39;t help x86)</span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="comment">// - allocates lots of intermediate memory (full size of all components)</span></div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="comment">// - non-interleaved case requires this anyway</span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;<span class="comment">// - allows good upsampling (see next)</span></div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;<span class="comment">// high-quality</span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="comment">// - upsampled channels are bilinearly interpolated, even across blocks</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="comment">// - quality integer IDCT derived from IJG&#39;s &#39;slow&#39;</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;<span class="comment">// performance</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;<span class="comment">// - fast huffman; reasonable integer IDCT</span></div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment">// - some SIMD kernels for common paths on targets with SSE2/NEON</span></div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment">// - uses a lot of intermediate memory, could cache poorly</span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="preprocessor">#ifndef STBI_NO_JPEG</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment">// huffman decoding acceleration</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="preprocessor">#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;{</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> fast[1 &lt;&lt; FAST_BITS];</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="comment">// weirdly, repacking this into AoS is a 10% speed loss, instead of a win</span></div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; stbi__uint16 code[256];</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> values[256];</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> size[257];</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxcode[18];</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordtype">int</span> delta[17]; <span class="comment">// old &#39;firstsymbol&#39; - old &#39;firstcode&#39;</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;} stbi__huffman;</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;{</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; stbi__context *s;</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; stbi__huffman huff_dc[4];</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; stbi__huffman huff_ac[4];</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; stbi__uint16 dequant[4][64];</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; stbi__int16 fast_ac[4][1 &lt;&lt; FAST_BITS];</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="comment">// sizes for components, interleaved MCUs</span></div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordtype">int</span> img_h_max, img_v_max;</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="keywordtype">int</span> img_mcu_x, img_mcu_y;</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordtype">int</span> img_mcu_w, img_mcu_h;</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment">// definition of jpeg image component</span></div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <span class="keyword">struct</span></div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordtype">int</span> id;</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="keywordtype">int</span> h,v;</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keywordtype">int</span> tq;</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <span class="keywordtype">int</span> hd,ha;</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <span class="keywordtype">int</span> dc_pred;</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keywordtype">int</span> x,y,w2,h2;</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *data;</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="keywordtype">void</span> *raw_data, *raw_coeff;</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *linebuf;</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordtype">short</span> *coeff; <span class="comment">// progressive only</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keywordtype">int</span> coeff_w, coeff_h; <span class="comment">// number of 8x8 coefficient blocks</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; } img_comp[4];</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; stbi__uint32 code_buffer; <span class="comment">// jpeg entropy-coded buffer</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordtype">int</span> code_bits; <span class="comment">// number of valid bits</span></div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> marker; <span class="comment">// marker seen while filling entropy buffer</span></div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <span class="keywordtype">int</span> nomore; <span class="comment">// flag if we saw a marker so must stop</span></div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <span class="keywordtype">int</span> progressive;</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordtype">int</span> spec_start;</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keywordtype">int</span> spec_end;</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordtype">int</span> succ_high;</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordtype">int</span> succ_low;</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordtype">int</span> eob_run;</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordtype">int</span> jfif;</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keywordtype">int</span> app14_color_transform; <span class="comment">// Adobe APP14 tag</span></div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <span class="keywordtype">int</span> rgb;</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <span class="keywordtype">int</span> scan_n, order[4];</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="keywordtype">int</span> restart_interval, todo;</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;<span class="comment">// kernels</span></div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; void (*idct_block_kernel)(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keywordtype">int</span> out_stride, <span class="keywordtype">short</span> data[64]);</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; void (*YCbCr_to_RGB_kernel)(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *y, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *pcb, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *pcr, <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> step);</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *(*resample_row_hv_2_kernel)(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs);</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;} stbi__jpeg;</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__build_huffman(stbi__huffman *h, <span class="keywordtype">int</span> *count)</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;{</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordtype">int</span> i,j,k=0,code;</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="comment">// build size list for each symbol (from JPEG spec)</span></div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 16; ++i)</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; count[i]; ++j)</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; h-&gt;size[k++] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) (i+1);</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; h-&gt;size[k] = 0;</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="comment">// compute actual symbols (from jpeg spec)</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; code = 0;</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; k = 0;</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordflow">for</span>(j=1; j &lt;= 16; ++j) {</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <span class="comment">// compute delta to add to code to compute symbol id</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; h-&gt;delta[j] = k - code;</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keywordflow">if</span> (h-&gt;size[k] == j) {</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keywordflow">while</span> (h-&gt;size[k] == j)</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; h-&gt;code[k++] = (stbi__uint16) (code++);</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">if</span> (code-1 &gt;= (1 &lt;&lt; j)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad code lengths&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="comment">// compute largest code + 1 for this size, preshifted as needed later</span></div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; h-&gt;maxcode[j] = code &lt;&lt; (16-j);</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; code &lt;&lt;= 1;</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; }</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; h-&gt;maxcode[j] = 0xffffffff;</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="comment">// build non-spec acceleration table; 255 is flag for not-accelerated</span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; memset(h-&gt;fast, 255, 1 &lt;&lt; FAST_BITS);</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; k; ++i) {</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="keywordtype">int</span> s = h-&gt;size[i];</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="keywordflow">if</span> (s &lt;= FAST_BITS) {</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordtype">int</span> c = h-&gt;code[i] &lt;&lt; (FAST_BITS-s);</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="keywordtype">int</span> m = 1 &lt;&lt; (FAST_BITS-s);</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; m; ++j) {</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; h-&gt;fast[c+j] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) i;</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; }</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; }</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; }</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;}</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment">// build a table that decodes both magnitude and value of small ACs in</span></div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment">// one go.</span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;{</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; (1 &lt;&lt; FAST_BITS); ++i) {</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> fast = h-&gt;fast[i];</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; fast_ac[i] = 0;</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="keywordflow">if</span> (fast &lt; 255) {</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <span class="keywordtype">int</span> rs = h-&gt;values[fast];</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="keywordtype">int</span> run = (rs &gt;&gt; 4) &amp; 15;</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <span class="keywordtype">int</span> magbits = rs &amp; 15;</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; <span class="keywordtype">int</span> len = h-&gt;size[fast];</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keywordflow">if</span> (magbits &amp;&amp; len + magbits &lt;= FAST_BITS) {</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="comment">// magnitude code followed by receive_extend code</span></div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordtype">int</span> k = ((i &lt;&lt; len) &amp; ((1 &lt;&lt; FAST_BITS) - 1)) &gt;&gt; (FAST_BITS - magbits);</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="keywordtype">int</span> m = 1 &lt;&lt; (magbits - 1);</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="keywordflow">if</span> (k &lt; m) k += (~0<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb">U</a> &lt;&lt; magbits) + 1;</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="comment">// if the result is small enough, we can fit it in fast_ac table</span></div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <span class="keywordflow">if</span> (k &gt;= -128 &amp;&amp; k &lt;= 127)</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; fast_ac[i] = (stbi__int16) ((k &lt;&lt; 8) + (run &lt;&lt; 4) + (len + magbits));</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; }</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; }</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;}</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__grow_buffer_unsafe(stbi__jpeg *j)</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;{</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <span class="keywordtype">int</span> b = j-&gt;nomore ? 0 : stbi__get8(j-&gt;s);</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="keywordflow">if</span> (b == 0xff) {</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keywordtype">int</span> c = stbi__get8(j-&gt;s);</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keywordflow">while</span> (c == 0xff) c = stbi__get8(j-&gt;s); <span class="comment">// consume fill bytes</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="keywordflow">if</span> (c != 0) {</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; j-&gt;marker = (<span class="keywordtype">unsigned</span> char) c;</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; j-&gt;nomore = 1;</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; }</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; }</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; j-&gt;code_buffer |= b &lt;&lt; (24 - j-&gt;code_bits);</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; j-&gt;code_bits += 8;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; } <span class="keywordflow">while</span> (j-&gt;code_bits &lt;= 24);</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;}</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment">// (1 &lt;&lt; n) - 1</span></div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="keyword">static</span> stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment">// decode a jpeg huffman value from the bitstream</span></div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h)</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;{</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> temp;</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keywordtype">int</span> c,k;</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 16) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="comment">// look at the top FAST_BITS and determine what symbol ID it is,</span></div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="comment">// if the code is &lt;= FAST_BITS</span></div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; c = (j-&gt;code_buffer &gt;&gt; (32 - FAST_BITS)) &amp; ((1 &lt;&lt; FAST_BITS)-1);</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; k = h-&gt;fast[c];</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <span class="keywordflow">if</span> (k &lt; 255) {</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="keywordtype">int</span> s = h-&gt;size[k];</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordflow">if</span> (s &gt; j-&gt;code_bits)</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; j-&gt;code_buffer &lt;&lt;= s;</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; j-&gt;code_bits -= s;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; <span class="keywordflow">return</span> h-&gt;values[k];</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; }</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// naive test is to shift the code_buffer down so k bits are</span></div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="comment">// valid, then test against maxcode. To speed this up, we&#39;ve</span></div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="comment">// preshifted maxcode left so that it has (16-k) 0s at the</span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="comment">// end; in other words, regardless of the number of bits, it</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; <span class="comment">// wants to be compared against something shifted to have 16;</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">// that way we don&#39;t need to shift inside the loop.</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; temp = j-&gt;code_buffer &gt;&gt; 16;</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; <span class="keywordflow">for</span> (k=FAST_BITS+1 ; ; ++k)</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="keywordflow">if</span> (temp &lt; h-&gt;maxcode[k])</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; <span class="keywordflow">if</span> (k == 17) {</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="comment">// error! code not found</span></div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; j-&gt;code_bits -= 16;</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; }</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <span class="keywordflow">if</span> (k &gt; j-&gt;code_bits)</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="comment">// convert the huffman code to the symbol id</span></div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; c = ((j-&gt;code_buffer &gt;&gt; (32 - k)) &amp; stbi__bmask[k]) + h-&gt;delta[k];</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; STBI_ASSERT((((j-&gt;code_buffer) &gt;&gt; (32 - h-&gt;size[c])) &amp; stbi__bmask[h-&gt;size[c]]) == h-&gt;code[c]);</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="comment">// convert the id to a symbol</span></div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; j-&gt;code_bits -= k;</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; j-&gt;code_buffer &lt;&lt;= k;</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="keywordflow">return</span> h-&gt;values[c];</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;}</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;<span class="comment">// bias[n] = (-1&lt;&lt;n) + 1</span></div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <span class="keyword">const</span> stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;<span class="comment">// combined JPEG &#39;receive&#39; and JPEG &#39;extend&#39;, since baseline</span></div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;<span class="comment">// always extends everything it receives.</span></div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__extend_receive(stbi__jpeg *j, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;{</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; <span class="keywordtype">int</span> sgn;</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; n) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; sgn = (stbi__int32)j-&gt;code_buffer &gt;&gt; 31; <span class="comment">// sign bit is always in MSB</span></div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; k = stbi_lrot(j-&gt;code_buffer, n);</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; STBI_ASSERT(n &gt;= 0 &amp;&amp; n &lt; (<span class="keywordtype">int</span>) (<span class="keyword">sizeof</span>(stbi__bmask)/<span class="keyword">sizeof</span>(*stbi__bmask)));</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; j-&gt;code_buffer = k &amp; ~stbi__bmask[n];</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; k &amp;= stbi__bmask[n];</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; j-&gt;code_bits -= n;</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <span class="keywordflow">return</span> k + (stbi__jbias[n] &amp; ~sgn);</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;}</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;<span class="comment">// get some unsigned bits</span></div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_get_bits(stbi__jpeg *j, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;{</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; n) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; k = stbi_lrot(j-&gt;code_buffer, n);</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; j-&gt;code_buffer = k &amp; ~stbi__bmask[n];</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; k &amp;= stbi__bmask[n];</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; j-&gt;code_bits -= n;</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <span class="keywordflow">return</span> k;</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;}</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_get_bit(stbi__jpeg *j)</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;{</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 1) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; k = j-&gt;code_buffer;</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; j-&gt;code_buffer &lt;&lt;= 1;</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; --j-&gt;code_bits;</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <span class="keywordflow">return</span> k &amp; 0x80000000;</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;}</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;<span class="comment">// given a value that&#39;s at position X in the zigzag stream,</span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;<span class="comment">// where does it appear in the 8x8 matrix coded as row-major?</span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__jpeg_dezigzag[64+15] =</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;{</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; 0, 1, 8, 16, 9, 2, 3, 10,</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; 17, 24, 32, 25, 18, 11, 4, 5,</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; 12, 19, 26, 33, 40, 48, 41, 34,</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; 27, 20, 13, 6, 7, 14, 21, 28,</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; 35, 42, 49, 56, 57, 50, 43, 36,</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; 29, 22, 15, 23, 30, 37, 44, 51,</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; 58, 59, 52, 45, 38, 31, 39, 46,</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; 53, 60, 61, 54, 47, 55, 62, 63,</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <span class="comment">// let corrupt input sample past end</span></div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; 63, 63, 63, 63, 63, 63, 63, 63,</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; 63, 63, 63, 63, 63, 63, 63</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;};</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;<span class="comment">// decode one 64-entry block--</span></div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_decode_block(stbi__jpeg *j, <span class="keywordtype">short</span> data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, <span class="keywordtype">int</span> b, stbi__uint16 *dequant)</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;{</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="keywordtype">int</span> diff,dc,k;</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keywordtype">int</span> t;</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 16) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; t = stbi__jpeg_huff_decode(j, hdc);</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <span class="keywordflow">if</span> (t &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; <span class="comment">// 0 all the ac values now so we can do it 32-bits at a time</span></div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; memset(data,0,64*<span class="keyword">sizeof</span>(data[0]));</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; diff = t ? stbi__extend_receive(j, t) : 0;</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; dc = j-&gt;img_comp[b].dc_pred + diff;</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; j-&gt;img_comp[b].dc_pred = dc;</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; data[0] = (short) (dc * dequant[0]);</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="comment">// decode AC components, see JPEG spec</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; k = 1;</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> zig;</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordtype">int</span> c,r,s;</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 16) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; c = (j-&gt;code_buffer &gt;&gt; (32 - FAST_BITS)) &amp; ((1 &lt;&lt; FAST_BITS)-1);</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; r = fac[c];</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keywordflow">if</span> (r) { <span class="comment">// fast-AC path</span></div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; k += (r &gt;&gt; 4) &amp; 15; <span class="comment">// run</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; s = r &amp; 15; <span class="comment">// combined length</span></div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; j-&gt;code_buffer &lt;&lt;= s;</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; j-&gt;code_bits -= s;</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="comment">// decode into unzigzag&#39;d location</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; zig = stbi__jpeg_dezigzag[k++];</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; data[zig] = (short) ((r &gt;&gt; 8) * dequant[zig]);</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keywordtype">int</span> rs = stbi__jpeg_huff_decode(j, hac);</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <span class="keywordflow">if</span> (rs &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; s = rs &amp; 15;</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; r = rs &gt;&gt; 4;</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; <span class="keywordflow">if</span> (s == 0) {</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <span class="keywordflow">if</span> (rs != 0xf0) <span class="keywordflow">break</span>; <span class="comment">// end block</span></div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; k += 16;</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; k += r;</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="comment">// decode into unzigzag&#39;d location</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; zig = stbi__jpeg_dezigzag[k++];</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]);</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; }</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; }</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; } <span class="keywordflow">while</span> (k &lt; 64);</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;}</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, <span class="keywordtype">short</span> data[64], stbi__huffman *hdc, <span class="keywordtype">int</span> b)</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;{</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="keywordtype">int</span> diff,dc;</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <span class="keywordtype">int</span> t;</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keywordflow">if</span> (j-&gt;spec_end != 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;can&#39;t merge dc and ac&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 16) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <span class="keywordflow">if</span> (j-&gt;succ_high == 0) {</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="comment">// first scan for DC coefficient, must be first</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; memset(data,0,64*<span class="keyword">sizeof</span>(data[0])); <span class="comment">// 0 all the ac values now</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; t = stbi__jpeg_huff_decode(j, hdc);</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; diff = t ? stbi__extend_receive(j, t) : 0;</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; dc = j-&gt;img_comp[b].dc_pred + diff;</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; j-&gt;img_comp[b].dc_pred = dc;</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; data[0] = (short) (dc &lt;&lt; j-&gt;succ_low);</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="comment">// refinement scan for DC coefficient</span></div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">if</span> (stbi__jpeg_get_bit(j))</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; data[0] += (<span class="keywordtype">short</span>) (1 &lt;&lt; j-&gt;succ_low);</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; }</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;}</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="comment">// @OPTIMIZE: store non-zigzagged during the decode passes,</span></div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;<span class="comment">// and only de-zigzag when dequantizing</span></div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, <span class="keywordtype">short</span> data[64], stbi__huffman *hac, stbi__int16 *fac)</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;{</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">if</span> (j-&gt;spec_start == 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;can&#39;t merge dc and ac&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; <span class="keywordflow">if</span> (j-&gt;succ_high == 0) {</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keywordtype">int</span> shift = j-&gt;succ_low;</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span> (j-&gt;eob_run) {</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; --j-&gt;eob_run;</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; }</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; k = j-&gt;spec_start;</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> zig;</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordtype">int</span> c,r,s;</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <span class="keywordflow">if</span> (j-&gt;code_bits &lt; 16) stbi__grow_buffer_unsafe(j);</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; c = (j-&gt;code_buffer &gt;&gt; (32 - FAST_BITS)) &amp; ((1 &lt;&lt; FAST_BITS)-1);</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; r = fac[c];</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; <span class="keywordflow">if</span> (r) { <span class="comment">// fast-AC path</span></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; k += (r &gt;&gt; 4) &amp; 15; <span class="comment">// run</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; s = r &amp; 15; <span class="comment">// combined length</span></div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; j-&gt;code_buffer &lt;&lt;= s;</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; j-&gt;code_bits -= s;</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; zig = stbi__jpeg_dezigzag[k++];</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; data[zig] = (short) ((r &gt;&gt; 8) &lt;&lt; shift);</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; <span class="keywordtype">int</span> rs = stbi__jpeg_huff_decode(j, hac);</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; <span class="keywordflow">if</span> (rs &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; s = rs &amp; 15;</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; r = rs &gt;&gt; 4;</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; <span class="keywordflow">if</span> (s == 0) {</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; <span class="keywordflow">if</span> (r &lt; 15) {</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; j-&gt;eob_run = (1 &lt;&lt; r);</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; <span class="keywordflow">if</span> (r)</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; j-&gt;eob_run += stbi__jpeg_get_bits(j, r);</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; --j-&gt;eob_run;</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; }</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; k += 16;</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; k += r;</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; zig = stbi__jpeg_dezigzag[k++];</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; data[zig] = (short) (stbi__extend_receive(j,s) &lt;&lt; shift);</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; }</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; }</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; } <span class="keywordflow">while</span> (k &lt;= j-&gt;spec_end);</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="comment">// refinement scan for these AC coefficients</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordtype">short</span> bit = (short) (1 &lt;&lt; j-&gt;succ_low);</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="keywordflow">if</span> (j-&gt;eob_run) {</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; --j-&gt;eob_run;</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">for</span> (k = j-&gt;spec_start; k &lt;= j-&gt;spec_end; ++k) {</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="keywordtype">short</span> *p = &amp;data[stbi__jpeg_dezigzag[k]];</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keywordflow">if</span> (*p != 0)</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">if</span> (stbi__jpeg_get_bit(j))</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; <span class="keywordflow">if</span> ((*p &amp; bit)==0) {</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">if</span> (*p &gt; 0)</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; *p += bit;</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; *p -= bit;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; }</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; }</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; k = j-&gt;spec_start;</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; <span class="keywordtype">int</span> r,s;</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <span class="keywordtype">int</span> rs = stbi__jpeg_huff_decode(j, hac); <span class="comment">// @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh</span></div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keywordflow">if</span> (rs &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; s = rs &amp; 15;</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; r = rs &gt;&gt; 4;</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <span class="keywordflow">if</span> (s == 0) {</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <span class="keywordflow">if</span> (r &lt; 15) {</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; j-&gt;eob_run = (1 &lt;&lt; r) - 1;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordflow">if</span> (r)</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; j-&gt;eob_run += stbi__jpeg_get_bits(j, r);</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; r = 64; <span class="comment">// force end of block</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">// r=15 s=0 should write 16 0s, so we just do</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="comment">// a run of 15 0s and then write s (which is 0),</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="comment">// so we don&#39;t have to do anything special here</span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; }</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="keywordflow">if</span> (s != 1) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; <span class="comment">// sign bit</span></div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <span class="keywordflow">if</span> (stbi__jpeg_get_bit(j))</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; s = bit;</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; s = -bit;</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; }</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; <span class="comment">// advance by r</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">while</span> (k &lt;= j-&gt;spec_end) {</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; <span class="keywordtype">short</span> *p = &amp;data[stbi__jpeg_dezigzag[k++]];</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">if</span> (*p != 0) {</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; <span class="keywordflow">if</span> (stbi__jpeg_get_bit(j))</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="keywordflow">if</span> ((*p &amp; bit)==0) {</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">if</span> (*p &gt; 0)</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; *p += bit;</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; *p -= bit;</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; }</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="keywordflow">if</span> (r == 0) {</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; *p = (short) s;</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; }</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; --r;</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; }</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; }</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; } <span class="keywordflow">while</span> (k &lt;= j-&gt;spec_end);</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; }</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; }</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;}</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;<span class="comment">// take a -128..127 value and stbi__clamp it and convert to 0..255</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;stbi_inline <span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__clamp(<span class="keywordtype">int</span> x)</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;{</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="comment">// trick to use a single test to catch both cases</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) x &gt; 255) {</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keywordflow">if</span> (x &lt; 0) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keywordflow">if</span> (x &gt; 255) <span class="keywordflow">return</span> 255;</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; }</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) x;</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;}</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;<span class="preprocessor">#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5)))</span></div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__fsh(x) ((x) &lt;&lt; 12)</span></div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;<span class="comment">// derived from jidctint -- DCT_ISLOW</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;<span class="preprocessor">#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \</span></div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;<span class="preprocessor"> int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \</span></div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;<span class="preprocessor"> p2 = s2; \</span></div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;<span class="preprocessor"> p3 = s6; \</span></div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;<span class="preprocessor"> p1 = (p2+p3) * stbi__f2f(0.5411961f); \</span></div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;<span class="preprocessor"> t2 = p1 + p3*stbi__f2f(-1.847759065f); \</span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="preprocessor"> t3 = p1 + p2*stbi__f2f( 0.765366865f); \</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="preprocessor"> p2 = s0; \</span></div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;<span class="preprocessor"> p3 = s4; \</span></div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;<span class="preprocessor"> t0 = stbi__fsh(p2+p3); \</span></div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;<span class="preprocessor"> t1 = stbi__fsh(p2-p3); \</span></div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;<span class="preprocessor"> x0 = t0+t3; \</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;<span class="preprocessor"> x3 = t0-t3; \</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;<span class="preprocessor"> x1 = t1+t2; \</span></div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;<span class="preprocessor"> x2 = t1-t2; \</span></div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;<span class="preprocessor"> t0 = s7; \</span></div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;<span class="preprocessor"> t1 = s5; \</span></div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;<span class="preprocessor"> t2 = s3; \</span></div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="preprocessor"> t3 = s1; \</span></div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;<span class="preprocessor"> p3 = t0+t2; \</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;<span class="preprocessor"> p4 = t1+t3; \</span></div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;<span class="preprocessor"> p1 = t0+t3; \</span></div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;<span class="preprocessor"> p2 = t1+t2; \</span></div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;<span class="preprocessor"> p5 = (p3+p4)*stbi__f2f( 1.175875602f); \</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="preprocessor"> t0 = t0*stbi__f2f( 0.298631336f); \</span></div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="preprocessor"> t1 = t1*stbi__f2f( 2.053119869f); \</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;<span class="preprocessor"> t2 = t2*stbi__f2f( 3.072711026f); \</span></div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;<span class="preprocessor"> t3 = t3*stbi__f2f( 1.501321110f); \</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;<span class="preprocessor"> p1 = p5 + p1*stbi__f2f(-0.899976223f); \</span></div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;<span class="preprocessor"> p2 = p5 + p2*stbi__f2f(-2.562915447f); \</span></div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;<span class="preprocessor"> p3 = p3*stbi__f2f(-1.961570560f); \</span></div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;<span class="preprocessor"> p4 = p4*stbi__f2f(-0.390180644f); \</span></div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;<span class="preprocessor"> t3 += p1+p4; \</span></div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;<span class="preprocessor"> t2 += p2+p3; \</span></div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;<span class="preprocessor"> t1 += p2+p4; \</span></div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;<span class="preprocessor"> t0 += p1+p3;</span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__idct_block(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keywordtype">int</span> out_stride, <span class="keywordtype">short</span> data[64])</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;{</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keywordtype">int</span> i,val[64],*v=val;</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *o;</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordtype">short</span> *d = data;</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; <span class="comment">// columns</span></div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 8; ++i,++d, ++v) {</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="comment">// if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing</span></div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <span class="keywordflow">if</span> (d[ 8]==0 &amp;&amp; d[16]==0 &amp;&amp; d[24]==0 &amp;&amp; d[32]==0</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; &amp;&amp; d[40]==0 &amp;&amp; d[48]==0 &amp;&amp; d[56]==0) {</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; <span class="comment">// no shortcut 0 seconds</span></div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="comment">// (1|2|3|4|5|6|7)==0 0 seconds</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; <span class="comment">// all separate -0.047 seconds</span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="comment">// 1 &amp;&amp; 2|3 &amp;&amp; 4|5 &amp;&amp; 6|7: -0.047 seconds</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordtype">int</span> dcterm = d[0] &lt;&lt; 2;</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56])</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; <span class="comment">// constants scaled things up by 1&lt;&lt;12; let&#39;s bring them back</span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="comment">// down, but keep 2 extra bits of precision</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; x0 += 512; x1 += 512; x2 += 512; x3 += 512;</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; v[ 0] = (x0+t3) &gt;&gt; 10;</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; v[56] = (x0-t3) &gt;&gt; 10;</div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; v[ 8] = (x1+t2) &gt;&gt; 10;</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; v[48] = (x1-t2) &gt;&gt; 10;</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; v[16] = (x2+t1) &gt;&gt; 10;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; v[40] = (x2-t1) &gt;&gt; 10;</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; v[24] = (x3+t0) &gt;&gt; 10;</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; v[32] = (x3-t0) &gt;&gt; 10;</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; }</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; }</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; for (i=0, v=val, o=out; i &lt; 8; ++i,v+=8,o+=out_stride) {</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; <span class="comment">// no fast case since the first 1D IDCT spread components out</span></div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7])</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="comment">// constants scaled things up by 1&lt;&lt;12, plus we had 1&lt;&lt;2 from first</span></div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="comment">// loop, plus horizontal and vertical each scale by sqrt(8) so together</span></div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; <span class="comment">// we&#39;ve got an extra 1&lt;&lt;3, so 1&lt;&lt;17 total we need to remove.</span></div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; <span class="comment">// so we want to round that, which means adding 0.5 * 1&lt;&lt;17,</span></div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; <span class="comment">// aka 65536. Also, we&#39;ll end up with -128 to 127 that we want</span></div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160; <span class="comment">// to encode as 0..255 by adding 128, so we&#39;ll add that before the shift</span></div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; x0 += 65536 + (128&lt;&lt;17);</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; x1 += 65536 + (128&lt;&lt;17);</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; x2 += 65536 + (128&lt;&lt;17);</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; x3 += 65536 + (128&lt;&lt;17);</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; <span class="comment">// tried computing the shifts into temps, or&#39;ing the temps to see</span></div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; <span class="comment">// if any were out of range, but that was slower</span></div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; o[0] = stbi__clamp((x0+t3) &gt;&gt; 17);</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; o[7] = stbi__clamp((x0-t3) &gt;&gt; 17);</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; o[1] = stbi__clamp((x1+t2) &gt;&gt; 17);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; o[6] = stbi__clamp((x1-t2) &gt;&gt; 17);</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; o[2] = stbi__clamp((x2+t1) &gt;&gt; 17);</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; o[5] = stbi__clamp((x2-t1) &gt;&gt; 17);</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; o[3] = stbi__clamp((x3+t0) &gt;&gt; 17);</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; o[4] = stbi__clamp((x3-t0) &gt;&gt; 17);</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; }</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;}</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;<span class="preprocessor">#ifdef STBI_SSE2</span></div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="preprocessor"></span><span class="comment">// sse2 integer IDCT. not the fastest possible implementation but it</span></div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="comment">// produces bit-identical results to the generic C version so it&#39;s</span></div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="comment">// fully &quot;transparent&quot;.</span></div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__idct_simd(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keywordtype">int</span> out_stride, <span class="keywordtype">short</span> data[64])</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;{</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; <span class="comment">// This is constructed to match our regular (generic) integer IDCT exactly.</span></div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; __m128i row0, row1, row2, row3, row4, row5, row6, row7;</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; __m128i tmp;</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; <span class="comment">// dot product constant: even elems=x, odd elems=y</span></div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;<span class="preprocessor"> #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y))</span></div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="comment">// out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit)</span></div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; <span class="comment">// out(1) = c1[even]*x + c1[odd]*y</span></div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;<span class="preprocessor"> #define dct_rot(out0,out1, x,y,c0,c1) \</span></div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;<span class="preprocessor"> __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \</span></div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;<span class="preprocessor"> __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \</span></div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;<span class="preprocessor"> __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \</span></div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;<span class="preprocessor"> __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \</span></div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;<span class="preprocessor"> __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \</span></div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="preprocessor"> __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)</span></div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <span class="comment">// out = in &lt;&lt; 12 (in 16-bit, out 32-bit)</span></div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;<span class="preprocessor"> #define dct_widen(out, in) \</span></div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;<span class="preprocessor"> __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \</span></div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;<span class="preprocessor"> __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)</span></div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; <span class="comment">// wide add</span></div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;<span class="preprocessor"> #define dct_wadd(out, a, b) \</span></div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;<span class="preprocessor"> __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \</span></div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;<span class="preprocessor"> __m128i out##_h = _mm_add_epi32(a##_h, b##_h)</span></div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <span class="comment">// wide sub</span></div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="preprocessor"> #define dct_wsub(out, a, b) \</span></div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;<span class="preprocessor"> __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \</span></div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;<span class="preprocessor"> __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)</span></div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; <span class="comment">// butterfly a/b, add bias, then shift by &quot;s&quot; and pack</span></div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;<span class="preprocessor"> #define dct_bfly32o(out0, out1, a,b,bias,s) \</span></div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="preprocessor"> { \</span></div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;<span class="preprocessor"> __m128i abiased_l = _mm_add_epi32(a##_l, bias); \</span></div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="preprocessor"> __m128i abiased_h = _mm_add_epi32(a##_h, bias); \</span></div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;<span class="preprocessor"> dct_wadd(sum, abiased, b); \</span></div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;<span class="preprocessor"> dct_wsub(dif, abiased, b); \</span></div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;<span class="preprocessor"> out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \</span></div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;<span class="preprocessor"> out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \</span></div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;<span class="preprocessor"> }</span></div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; <span class="comment">// 8-bit interleave step (for transposes)</span></div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;<span class="preprocessor"> #define dct_interleave8(a, b) \</span></div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;<span class="preprocessor"> tmp = a; \</span></div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;<span class="preprocessor"> a = _mm_unpacklo_epi8(a, b); \</span></div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;<span class="preprocessor"> b = _mm_unpackhi_epi8(tmp, b)</span></div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; <span class="comment">// 16-bit interleave step (for transposes)</span></div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;<span class="preprocessor"> #define dct_interleave16(a, b) \</span></div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;<span class="preprocessor"> tmp = a; \</span></div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;<span class="preprocessor"> a = _mm_unpacklo_epi16(a, b); \</span></div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;<span class="preprocessor"> b = _mm_unpackhi_epi16(tmp, b)</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;<span class="preprocessor"> #define dct_pass(bias,shift) \</span></div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;<span class="preprocessor"> { \</span></div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;<span class="preprocessor"> </span><span class="comment">/* even part */</span><span class="preprocessor"> \</span></div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;<span class="preprocessor"> dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \</span></div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;<span class="preprocessor"> __m128i sum04 = _mm_add_epi16(row0, row4); \</span></div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;<span class="preprocessor"> __m128i dif04 = _mm_sub_epi16(row0, row4); \</span></div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;<span class="preprocessor"> dct_widen(t0e, sum04); \</span></div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;<span class="preprocessor"> dct_widen(t1e, dif04); \</span></div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;<span class="preprocessor"> dct_wadd(x0, t0e, t3e); \</span></div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;<span class="preprocessor"> dct_wsub(x3, t0e, t3e); \</span></div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="preprocessor"> dct_wadd(x1, t1e, t2e); \</span></div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;<span class="preprocessor"> dct_wsub(x2, t1e, t2e); \</span></div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;<span class="preprocessor"> </span><span class="comment">/* odd part */</span><span class="preprocessor"> \</span></div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;<span class="preprocessor"> dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \</span></div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;<span class="preprocessor"> dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \</span></div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;<span class="preprocessor"> __m128i sum17 = _mm_add_epi16(row1, row7); \</span></div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;<span class="preprocessor"> __m128i sum35 = _mm_add_epi16(row3, row5); \</span></div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;<span class="preprocessor"> dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \</span></div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;<span class="preprocessor"> dct_wadd(x4, y0o, y4o); \</span></div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="preprocessor"> dct_wadd(x5, y1o, y5o); \</span></div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="preprocessor"> dct_wadd(x6, y2o, y5o); \</span></div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="preprocessor"> dct_wadd(x7, y3o, y4o); \</span></div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;<span class="preprocessor"> dct_bfly32o(row0,row7, x0,x7,bias,shift); \</span></div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;<span class="preprocessor"> dct_bfly32o(row1,row6, x1,x6,bias,shift); \</span></div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;<span class="preprocessor"> dct_bfly32o(row2,row5, x2,x5,bias,shift); \</span></div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;<span class="preprocessor"> dct_bfly32o(row3,row4, x3,x4,bias,shift); \</span></div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="preprocessor"> }</span></div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f));</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f));</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f));</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f));</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f));</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f));</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <span class="comment">// rounding biases in column/row passes, see stbi__idct_block for explanation.</span></div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; __m128i bias_0 = _mm_set1_epi32(512);</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; __m128i bias_1 = _mm_set1_epi32(65536 + (128&lt;&lt;17));</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="comment">// load</span></div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; row0 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 0*8));</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; row1 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 1*8));</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; row2 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 2*8));</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; row3 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 3*8));</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; row4 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 4*8));</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; row5 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 5*8));</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; row6 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 6*8));</div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; row7 = _mm_load_si128((<span class="keyword">const</span> __m128i *) (data + 7*8));</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; <span class="comment">// column pass</span></div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; dct_pass(bias_0, 10);</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; {</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="comment">// 16bit 8x8 transpose pass 1</span></div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; dct_interleave16(row0, row4);</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; dct_interleave16(row1, row5);</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; dct_interleave16(row2, row6);</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; dct_interleave16(row3, row7);</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="comment">// transpose pass 2</span></div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; dct_interleave16(row0, row2);</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; dct_interleave16(row1, row3);</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; dct_interleave16(row4, row6);</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; dct_interleave16(row5, row7);</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; <span class="comment">// transpose pass 3</span></div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; dct_interleave16(row0, row1);</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; dct_interleave16(row2, row3);</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; dct_interleave16(row4, row5);</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; dct_interleave16(row6, row7);</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; }</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="comment">// row pass</span></div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; dct_pass(bias_1, 17);</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; {</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; <span class="comment">// pack</span></div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; __m128i p0 = _mm_packus_epi16(row0, row1); <span class="comment">// a0a1a2a3...a7b0b1b2b3...b7</span></div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; __m128i p1 = _mm_packus_epi16(row2, row3);</div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; __m128i p2 = _mm_packus_epi16(row4, row5);</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; __m128i p3 = _mm_packus_epi16(row6, row7);</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; <span class="comment">// 8bit 8x8 transpose pass 1</span></div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; dct_interleave8(p0, p2); <span class="comment">// a0e0a1e1...</span></div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; dct_interleave8(p1, p3); <span class="comment">// c0g0c1g1...</span></div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; <span class="comment">// transpose pass 2</span></div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; dct_interleave8(p0, p1); <span class="comment">// a0c0e0g0...</span></div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; dct_interleave8(p2, p3); <span class="comment">// b0d0f0h0...</span></div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; <span class="comment">// transpose pass 3</span></div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; dct_interleave8(p0, p2); <span class="comment">// a0b0c0d0...</span></div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; dct_interleave8(p1, p3); <span class="comment">// a4b4c4d4...</span></div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="comment">// store</span></div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; _mm_storel_epi64((__m128i *) out, p0); out += out_stride;</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride;</div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; _mm_storel_epi64((__m128i *) out, p2); out += out_stride;</div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride;</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; _mm_storel_epi64((__m128i *) out, p1); out += out_stride;</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride;</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160; _mm_storel_epi64((__m128i *) out, p3); out += out_stride;</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e));</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; }</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;<span class="preprocessor">#undef dct_const</span></div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_rot</span></div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_widen</span></div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_wadd</span></div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_wsub</span></div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_bfly32o</span></div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_interleave8</span></div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_interleave16</span></div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_pass</span></div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;</div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;<span class="preprocessor">#endif // STBI_SSE2</span></div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;<span class="preprocessor">#ifdef STBI_NEON</span></div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;<span class="comment">// NEON integer IDCT. should produce bit-identical</span></div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;<span class="comment">// results to the generic C version.</span></div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__idct_simd(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keywordtype">int</span> out_stride, <span class="keywordtype">short</span> data[64])</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;{</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; int16x8_t row0, row1, row2, row3, row4, row5, row6, row7;</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f));</div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f));</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f));</div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f));</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f));</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f));</div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f));</div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f));</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f));</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f));</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f));</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f));</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;<span class="preprocessor">#define dct_long_mul(out, inq, coeff) \</span></div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;<span class="preprocessor"> int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \</span></div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;<span class="preprocessor"> int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff)</span></div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;<span class="preprocessor">#define dct_long_mac(out, acc, inq, coeff) \</span></div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;<span class="preprocessor"> int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \</span></div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;<span class="preprocessor"> int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff)</span></div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;<span class="preprocessor">#define dct_widen(out, inq) \</span></div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;<span class="preprocessor"> int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \</span></div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;<span class="preprocessor"> int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12)</span></div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;<span class="comment">// wide add</span></div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;<span class="preprocessor">#define dct_wadd(out, a, b) \</span></div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;<span class="preprocessor"> int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \</span></div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;<span class="preprocessor"> int32x4_t out##_h = vaddq_s32(a##_h, b##_h)</span></div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;<span class="comment">// wide sub</span></div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;<span class="preprocessor">#define dct_wsub(out, a, b) \</span></div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;<span class="preprocessor"> int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \</span></div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;<span class="preprocessor"> int32x4_t out##_h = vsubq_s32(a##_h, b##_h)</span></div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;<span class="comment">// butterfly a/b, then shift using &quot;shiftop&quot; by &quot;s&quot; and pack</span></div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;<span class="preprocessor">#define dct_bfly32o(out0,out1, a,b,shiftop,s) \</span></div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;<span class="preprocessor"> { \</span></div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;<span class="preprocessor"> dct_wadd(sum, a, b); \</span></div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;<span class="preprocessor"> dct_wsub(dif, a, b); \</span></div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;<span class="preprocessor"> out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \</span></div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;<span class="preprocessor"> out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \</span></div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;<span class="preprocessor"> }</span></div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;<span class="preprocessor">#define dct_pass(shiftop, shift) \</span></div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;<span class="preprocessor"> { \</span></div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;<span class="preprocessor"> </span><span class="comment">/* even part */</span><span class="preprocessor"> \</span></div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;<span class="preprocessor"> int16x8_t sum26 = vaddq_s16(row2, row6); \</span></div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;<span class="preprocessor"> dct_long_mul(p1e, sum26, rot0_0); \</span></div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;<span class="preprocessor"> dct_long_mac(t2e, p1e, row6, rot0_1); \</span></div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;<span class="preprocessor"> dct_long_mac(t3e, p1e, row2, rot0_2); \</span></div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;<span class="preprocessor"> int16x8_t sum04 = vaddq_s16(row0, row4); \</span></div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;<span class="preprocessor"> int16x8_t dif04 = vsubq_s16(row0, row4); \</span></div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;<span class="preprocessor"> dct_widen(t0e, sum04); \</span></div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;<span class="preprocessor"> dct_widen(t1e, dif04); \</span></div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;<span class="preprocessor"> dct_wadd(x0, t0e, t3e); \</span></div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;<span class="preprocessor"> dct_wsub(x3, t0e, t3e); \</span></div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;<span class="preprocessor"> dct_wadd(x1, t1e, t2e); \</span></div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;<span class="preprocessor"> dct_wsub(x2, t1e, t2e); \</span></div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;<span class="preprocessor"> </span><span class="comment">/* odd part */</span><span class="preprocessor"> \</span></div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;<span class="preprocessor"> int16x8_t sum15 = vaddq_s16(row1, row5); \</span></div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;<span class="preprocessor"> int16x8_t sum17 = vaddq_s16(row1, row7); \</span></div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;<span class="preprocessor"> int16x8_t sum35 = vaddq_s16(row3, row5); \</span></div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;<span class="preprocessor"> int16x8_t sum37 = vaddq_s16(row3, row7); \</span></div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;<span class="preprocessor"> int16x8_t sumodd = vaddq_s16(sum17, sum35); \</span></div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;<span class="preprocessor"> dct_long_mul(p5o, sumodd, rot1_0); \</span></div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;<span class="preprocessor"> dct_long_mac(p1o, p5o, sum17, rot1_1); \</span></div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;<span class="preprocessor"> dct_long_mac(p2o, p5o, sum35, rot1_2); \</span></div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;<span class="preprocessor"> dct_long_mul(p3o, sum37, rot2_0); \</span></div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;<span class="preprocessor"> dct_long_mul(p4o, sum15, rot2_1); \</span></div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;<span class="preprocessor"> dct_wadd(sump13o, p1o, p3o); \</span></div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;<span class="preprocessor"> dct_wadd(sump24o, p2o, p4o); \</span></div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;<span class="preprocessor"> dct_wadd(sump23o, p2o, p3o); \</span></div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="preprocessor"> dct_wadd(sump14o, p1o, p4o); \</span></div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;<span class="preprocessor"> dct_long_mac(x4, sump13o, row7, rot3_0); \</span></div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;<span class="preprocessor"> dct_long_mac(x5, sump24o, row5, rot3_1); \</span></div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;<span class="preprocessor"> dct_long_mac(x6, sump23o, row3, rot3_2); \</span></div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;<span class="preprocessor"> dct_long_mac(x7, sump14o, row1, rot3_3); \</span></div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;<span class="preprocessor"> dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \</span></div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;<span class="preprocessor"> dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \</span></div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;<span class="preprocessor"> dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \</span></div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;<span class="preprocessor"> dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \</span></div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;<span class="preprocessor"> }</span></div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="comment">// load</span></div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; row0 = vld1q_s16(data + 0*8);</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; row1 = vld1q_s16(data + 1*8);</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; row2 = vld1q_s16(data + 2*8);</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; row3 = vld1q_s16(data + 3*8);</div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; row4 = vld1q_s16(data + 4*8);</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; row5 = vld1q_s16(data + 5*8);</div>
+<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; row6 = vld1q_s16(data + 6*8);</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; row7 = vld1q_s16(data + 7*8);</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <span class="comment">// add DC bias</span></div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0));</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; <span class="comment">// column pass</span></div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; dct_pass(vrshrn_n_s32, 10);</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;</div>
+<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; <span class="comment">// 16bit 8x8 transpose</span></div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; {</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;<span class="comment">// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively.</span></div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;<span class="comment">// whether compilers actually get this is another story, sadly.</span></div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;<span class="preprocessor">#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; }</span></div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); }</span></div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); }</span></div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="comment">// pass 1</span></div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; dct_trn16(row0, row1); <span class="comment">// a0b0a2b2a4b4a6b6</span></div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; dct_trn16(row2, row3);</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; dct_trn16(row4, row5);</div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; dct_trn16(row6, row7);</div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; <span class="comment">// pass 2</span></div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; dct_trn32(row0, row2); <span class="comment">// a0b0c0d0a4b4c4d4</span></div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; dct_trn32(row1, row3);</div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; dct_trn32(row4, row6);</div>
+<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; dct_trn32(row5, row7);</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;</div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; <span class="comment">// pass 3</span></div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; dct_trn64(row0, row4); <span class="comment">// a0b0c0d0e0f0g0h0</span></div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; dct_trn64(row1, row5);</div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; dct_trn64(row2, row6);</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; dct_trn64(row3, row7);</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;</div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;<span class="preprocessor">#undef dct_trn16</span></div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_trn32</span></div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_trn64</span></div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;<span class="preprocessor"></span> }</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;</div>
+<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; <span class="comment">// row pass</span></div>
+<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="comment">// vrshrn_n_s32 only supports shifts up to 16, we need</span></div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; <span class="comment">// 17. so do a non-rounding shift of 16 first then follow</span></div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; <span class="comment">// up with a rounding shift by 1.</span></div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; dct_pass(vshrn_n_s32, 16);</div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; {</div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; <span class="comment">// pack and round</span></div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; uint8x8_t p0 = vqrshrun_n_s16(row0, 1);</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; uint8x8_t p1 = vqrshrun_n_s16(row1, 1);</div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; uint8x8_t p2 = vqrshrun_n_s16(row2, 1);</div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; uint8x8_t p3 = vqrshrun_n_s16(row3, 1);</div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; uint8x8_t p4 = vqrshrun_n_s16(row4, 1);</div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; uint8x8_t p5 = vqrshrun_n_s16(row5, 1);</div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; uint8x8_t p6 = vqrshrun_n_s16(row6, 1);</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; uint8x8_t p7 = vqrshrun_n_s16(row7, 1);</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;</div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <span class="comment">// again, these can translate into one instruction, but often don&#39;t.</span></div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;<span class="preprocessor">#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; }</span></div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); }</span></div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); }</span></div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; <span class="comment">// sadly can&#39;t use interleaved stores here since we only write</span></div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <span class="comment">// 8 bytes to each scan line!</span></div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;</div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; <span class="comment">// 8x8 8-bit transpose pass 1</span></div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; dct_trn8_8(p0, p1);</div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; dct_trn8_8(p2, p3);</div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; dct_trn8_8(p4, p5);</div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; dct_trn8_8(p6, p7);</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; <span class="comment">// pass 2</span></div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; dct_trn8_16(p0, p2);</div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; dct_trn8_16(p1, p3);</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; dct_trn8_16(p4, p6);</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; dct_trn8_16(p5, p7);</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;</div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; <span class="comment">// pass 3</span></div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; dct_trn8_32(p0, p4);</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; dct_trn8_32(p1, p5);</div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; dct_trn8_32(p2, p6);</div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; dct_trn8_32(p3, p7);</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <span class="comment">// store</span></div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; vst1_u8(out, p0); out += out_stride;</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; vst1_u8(out, p1); out += out_stride;</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; vst1_u8(out, p2); out += out_stride;</div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; vst1_u8(out, p3); out += out_stride;</div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; vst1_u8(out, p4); out += out_stride;</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; vst1_u8(out, p5); out += out_stride;</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; vst1_u8(out, p6); out += out_stride;</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; vst1_u8(out, p7);</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;<span class="preprocessor">#undef dct_trn8_8</span></div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_trn8_16</span></div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_trn8_32</span></div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;<span class="preprocessor"></span> }</div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;</div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;<span class="preprocessor">#undef dct_long_mul</span></div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_long_mac</span></div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_widen</span></div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_wadd</span></div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_wsub</span></div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_bfly32o</span></div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#undef dct_pass</span></div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="preprocessor">#endif // STBI_NEON</span></div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;<span class="preprocessor">#define STBI__MARKER_none 0xff</span></div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;<span class="preprocessor"></span><span class="comment">// if there&#39;s a pending marker from the entropy stream, return that</span></div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;<span class="comment">// otherwise, fetch from the stream and get a marker. if there&#39;s no</span></div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;<span class="comment">// marker, return 0xff, which is never a valid marker value</span></div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__get_marker(stbi__jpeg *j)</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;{</div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> x;</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="keywordflow">if</span> (j-&gt;marker != STBI__MARKER_none) { x = j-&gt;marker; j-&gt;marker = STBI__MARKER_none; <span class="keywordflow">return</span> x; }</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; x = stbi__get8(j-&gt;s);</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; <span class="keywordflow">if</span> (x != 0xff) <span class="keywordflow">return</span> STBI__MARKER_none;</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; <span class="keywordflow">while</span> (x == 0xff)</div>
+<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; x = stbi__get8(j-&gt;s); <span class="comment">// consume repeated 0xff fill bytes</span></div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; <span class="keywordflow">return</span> x;</div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;}</div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;</div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;<span class="comment">// in each scan, we&#39;ll have scan_n components, and the order</span></div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;<span class="comment">// of the components is specified by order[]</span></div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160;<span class="preprocessor">#define STBI__RESTART(x) ((x) &gt;= 0xd0 &amp;&amp; (x) &lt;= 0xd7)</span></div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;<span class="comment">// after a restart interval, stbi__jpeg_reset the entropy decoder and</span></div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;<span class="comment">// the dc prediction</span></div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__jpeg_reset(stbi__jpeg *j)</div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;{</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; j-&gt;code_bits = 0;</div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; j-&gt;code_buffer = 0;</div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; j-&gt;nomore = 0;</div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; j-&gt;img_comp[0].dc_pred = j-&gt;img_comp[1].dc_pred = j-&gt;img_comp[2].dc_pred = j-&gt;img_comp[3].dc_pred = 0;</div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; j-&gt;marker = STBI__MARKER_none;</div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; j-&gt;todo = j-&gt;restart_interval ? j-&gt;restart_interval : 0x7fffffff;</div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; j-&gt;eob_run = 0;</div>
+<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; <span class="comment">// no more than 1&lt;&lt;31 MCUs if no restart_interal? that&#39;s plenty safe,</span></div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; <span class="comment">// since we don&#39;t even allow 1&lt;&lt;30 pixels</span></div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;}</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_entropy_coded_data(stbi__jpeg *z)</div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;{</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; stbi__jpeg_reset(z);</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160; <span class="keywordflow">if</span> (!z-&gt;progressive) {</div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keywordflow">if</span> (z-&gt;scan_n == 1) {</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; STBI_SIMD_ALIGN(<span class="keywordtype">short</span>, data[64]);</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <span class="keywordtype">int</span> n = z-&gt;order[0];</div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; <span class="comment">// non-interleaved data, we just need to process one block at a time,</span></div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; <span class="comment">// in trivial scanline order</span></div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; <span class="comment">// number of blocks to do just depends on how many actual &quot;pixels&quot; this</span></div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; <span class="comment">// component has, independent of interleaved MCU blocking and such</span></div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; <span class="keywordtype">int</span> w = (z-&gt;img_comp[n].x+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="keywordtype">int</span> h = (z-&gt;img_comp[n].y+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; h; ++j) {</div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w; ++i) {</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="keywordtype">int</span> ha = z-&gt;img_comp[n].ha;</div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <span class="keywordflow">if</span> (!stbi__jpeg_decode_block(z, data, z-&gt;huff_dc+z-&gt;img_comp[n].hd, z-&gt;huff_ac+ha, z-&gt;fast_ac[ha], n, z-&gt;dequant[z-&gt;img_comp[n].tq])) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; z-&gt;idct_block_kernel(z-&gt;img_comp[n].data+z-&gt;img_comp[n].w2*j*8+i*8, z-&gt;img_comp[n].w2, data);</div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; <span class="comment">// every data block is an MCU, so countdown the restart interval</span></div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; <span class="keywordflow">if</span> (--z-&gt;todo &lt;= 0) {</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; <span class="keywordflow">if</span> (z-&gt;code_bits &lt; 24) stbi__grow_buffer_unsafe(z);</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; <span class="comment">// if it&#39;s NOT a restart, then just bail, so we get corrupt data</span></div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; <span class="comment">// rather than no data</span></div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; <span class="keywordflow">if</span> (!STBI__RESTART(z-&gt;marker)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; stbi__jpeg_reset(z);</div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; }</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; }</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; }</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// interleaved</span></div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="keywordtype">int</span> i,j,k,x,y;</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; STBI_SIMD_ALIGN(<span class="keywordtype">short</span>, data[64]);</div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; z-&gt;img_mcu_y; ++j) {</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;img_mcu_x; ++i) {</div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; <span class="comment">// scan an interleaved mcu... process scan_n components in order</span></div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; z-&gt;scan_n; ++k) {</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <span class="keywordtype">int</span> n = z-&gt;order[k];</div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <span class="comment">// scan out an mcu&#39;s worth of this component; that&#39;s just determined</span></div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; <span class="comment">// by the basic H and V specified for the component</span></div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <span class="keywordflow">for</span> (y=0; y &lt; z-&gt;img_comp[n].v; ++y) {</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; <span class="keywordflow">for</span> (x=0; x &lt; z-&gt;img_comp[n].h; ++x) {</div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; <span class="keywordtype">int</span> x2 = (i*z-&gt;img_comp[n].h + x)*8;</div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; <span class="keywordtype">int</span> y2 = (j*z-&gt;img_comp[n].v + y)*8;</div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; <span class="keywordtype">int</span> ha = z-&gt;img_comp[n].ha;</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; <span class="keywordflow">if</span> (!stbi__jpeg_decode_block(z, data, z-&gt;huff_dc+z-&gt;img_comp[n].hd, z-&gt;huff_ac+ha, z-&gt;fast_ac[ha], n, z-&gt;dequant[z-&gt;img_comp[n].tq])) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; z-&gt;idct_block_kernel(z-&gt;img_comp[n].data+z-&gt;img_comp[n].w2*y2+x2, z-&gt;img_comp[n].w2, data);</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; }</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; }</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; }</div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <span class="comment">// after all interleaved components, that&#39;s an interleaved MCU,</span></div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; <span class="comment">// so now count down the restart interval</span></div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; <span class="keywordflow">if</span> (--z-&gt;todo &lt;= 0) {</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; <span class="keywordflow">if</span> (z-&gt;code_bits &lt; 24) stbi__grow_buffer_unsafe(z);</div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keywordflow">if</span> (!STBI__RESTART(z-&gt;marker)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; stbi__jpeg_reset(z);</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; }</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; }</div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; }</div>
+<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; }</div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; <span class="keywordflow">if</span> (z-&gt;scan_n == 1) {</div>
+<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; <span class="keywordtype">int</span> n = z-&gt;order[0];</div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; <span class="comment">// non-interleaved data, we just need to process one block at a time,</span></div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160; <span class="comment">// in trivial scanline order</span></div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <span class="comment">// number of blocks to do just depends on how many actual &quot;pixels&quot; this</span></div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; <span class="comment">// component has, independent of interleaved MCU blocking and such</span></div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; <span class="keywordtype">int</span> w = (z-&gt;img_comp[n].x+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; <span class="keywordtype">int</span> h = (z-&gt;img_comp[n].y+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; h; ++j) {</div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w; ++i) {</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="keywordtype">short</span> *data = z-&gt;img_comp[n].coeff + 64 * (i + j * z-&gt;img_comp[n].coeff_w);</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; <span class="keywordflow">if</span> (z-&gt;spec_start == 0) {</div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <span class="keywordflow">if</span> (!stbi__jpeg_decode_block_prog_dc(z, data, &amp;z-&gt;huff_dc[z-&gt;img_comp[n].hd], n))</div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keywordtype">int</span> ha = z-&gt;img_comp[n].ha;</div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <span class="keywordflow">if</span> (!stbi__jpeg_decode_block_prog_ac(z, data, &amp;z-&gt;huff_ac[ha], z-&gt;fast_ac[ha]))</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; }</div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; <span class="comment">// every data block is an MCU, so countdown the restart interval</span></div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="keywordflow">if</span> (--z-&gt;todo &lt;= 0) {</div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; <span class="keywordflow">if</span> (z-&gt;code_bits &lt; 24) stbi__grow_buffer_unsafe(z);</div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; <span class="keywordflow">if</span> (!STBI__RESTART(z-&gt;marker)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; stbi__jpeg_reset(z);</div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; }</div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; }</div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; }</div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// interleaved</span></div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <span class="keywordtype">int</span> i,j,k,x,y;</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; z-&gt;img_mcu_y; ++j) {</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;img_mcu_x; ++i) {</div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; <span class="comment">// scan an interleaved mcu... process scan_n components in order</span></div>
+<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; z-&gt;scan_n; ++k) {</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; <span class="keywordtype">int</span> n = z-&gt;order[k];</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; <span class="comment">// scan out an mcu&#39;s worth of this component; that&#39;s just determined</span></div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; <span class="comment">// by the basic H and V specified for the component</span></div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; <span class="keywordflow">for</span> (y=0; y &lt; z-&gt;img_comp[n].v; ++y) {</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; <span class="keywordflow">for</span> (x=0; x &lt; z-&gt;img_comp[n].h; ++x) {</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <span class="keywordtype">int</span> x2 = (i*z-&gt;img_comp[n].h + x);</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; <span class="keywordtype">int</span> y2 = (j*z-&gt;img_comp[n].v + y);</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; <span class="keywordtype">short</span> *data = z-&gt;img_comp[n].coeff + 64 * (x2 + y2 * z-&gt;img_comp[n].coeff_w);</div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; <span class="keywordflow">if</span> (!stbi__jpeg_decode_block_prog_dc(z, data, &amp;z-&gt;huff_dc[z-&gt;img_comp[n].hd], n))</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; }</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; }</div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; }</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; <span class="comment">// after all interleaved components, that&#39;s an interleaved MCU,</span></div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; <span class="comment">// so now count down the restart interval</span></div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; <span class="keywordflow">if</span> (--z-&gt;todo &lt;= 0) {</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; <span class="keywordflow">if</span> (z-&gt;code_bits &lt; 24) stbi__grow_buffer_unsafe(z);</div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; <span class="keywordflow">if</span> (!STBI__RESTART(z-&gt;marker)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; stbi__jpeg_reset(z);</div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; }</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; }</div>
+<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160; }</div>
+<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; }</div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; }</div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;}</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;</div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__jpeg_dequantize(<span class="keywordtype">short</span> *data, stbi__uint16 *dequant)</div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;{</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 64; ++i)</div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; data[i] *= dequant[i];</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;}</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div>
+<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__jpeg_finish(stbi__jpeg *z)</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160;{</div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160; <span class="keywordflow">if</span> (z-&gt;progressive) {</div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; <span class="comment">// dequantize and idct the data</span></div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; <span class="keywordtype">int</span> i,j,n;</div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; <span class="keywordflow">for</span> (n=0; n &lt; z-&gt;s-&gt;img_n; ++n) {</div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; <span class="keywordtype">int</span> w = (z-&gt;img_comp[n].x+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; <span class="keywordtype">int</span> h = (z-&gt;img_comp[n].y+7) &gt;&gt; 3;</div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; h; ++j) {</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w; ++i) {</div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="keywordtype">short</span> *data = z-&gt;img_comp[n].coeff + 64 * (i + j * z-&gt;img_comp[n].coeff_w);</div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; stbi__jpeg_dequantize(data, z-&gt;dequant[z-&gt;img_comp[n].tq]);</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; z-&gt;idct_block_kernel(z-&gt;img_comp[n].data+z-&gt;img_comp[n].w2*j*8+i*8, z-&gt;img_comp[n].w2, data);</div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; }</div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; }</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; }</div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; }</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160;}</div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160;</div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__process_marker(stbi__jpeg *z, <span class="keywordtype">int</span> m)</div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;{</div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160; <span class="keywordtype">int</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587">L</a>;</div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; <span class="keywordflow">switch</span> (m) {</div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; <span class="keywordflow">case</span> STBI__MARKER_none: <span class="comment">// no marker found</span></div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;expected marker&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;</div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; <span class="keywordflow">case</span> 0xDD: <span class="comment">// DRI - specify restart interval</span></div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(z-&gt;s) != 4) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad DRI len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; z-&gt;restart_interval = stbi__get16be(z-&gt;s);</div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;</div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160; <span class="keywordflow">case</span> 0xDB: <span class="comment">// DQT - define quantization table</span></div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160; L = stbi__get16be(z-&gt;s)-2;</div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160; <span class="keywordflow">while</span> (L &gt; 0) {</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160; <span class="keywordtype">int</span> q = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; <span class="keywordtype">int</span> p = q &gt;&gt; 4, sixteen = (p != 0);</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; <span class="keywordtype">int</span> t = q &amp; 15,i;</div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160; <span class="keywordflow">if</span> (p != 0 &amp;&amp; p != 1) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad DQT type&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160; <span class="keywordflow">if</span> (t &gt; 3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad DQT table&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160;</div>
+<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 64; ++i)</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160; z-&gt;dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z-&gt;s) : stbi__get8(z-&gt;s));</div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; L -= (sixteen ? 129 : 65);</div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160; }</div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <span class="keywordflow">return</span> L==0;</div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;</div>
+<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; <span class="keywordflow">case</span> 0xC4: <span class="comment">// DHT - define huffman table</span></div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; L = stbi__get16be(z-&gt;s)-2;</div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; <span class="keywordflow">while</span> (L &gt; 0) {</div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *v;</div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160; <span class="keywordtype">int</span> sizes[16],i,n=0;</div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordtype">int</span> q = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160; <span class="keywordtype">int</span> tc = q &gt;&gt; 4;</div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; <span class="keywordtype">int</span> th = q &amp; 15;</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; <span class="keywordflow">if</span> (tc &gt; 1 || th &gt; 3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad DHT header&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 16; ++i) {</div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; sizes[i] = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; n += sizes[i];</div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; }</div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; L -= 17;</div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; <span class="keywordflow">if</span> (tc == 0) {</div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160; <span class="keywordflow">if</span> (!stbi__build_huffman(z-&gt;huff_dc+th, sizes)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; v = z-&gt;huff_dc[th].values;</div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keywordflow">if</span> (!stbi__build_huffman(z-&gt;huff_ac+th, sizes)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; v = z-&gt;huff_ac[th].values;</div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160; }</div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; n; ++i)</div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160; v[i] = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; <span class="keywordflow">if</span> (tc != 0)</div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; stbi__build_fast_ac(z-&gt;fast_ac[th], z-&gt;huff_ac + th);</div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160; L -= n;</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; }</div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; <span class="keywordflow">return</span> L==0;</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; }</div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160;</div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; <span class="comment">// check for comment block or APP blocks</span></div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; <span class="keywordflow">if</span> ((m &gt;= 0xE0 &amp;&amp; m &lt;= 0xEF) || m == 0xFE) {</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; L = stbi__get16be(z-&gt;s);</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <span class="keywordflow">if</span> (L &lt; 2) {</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; <span class="keywordflow">if</span> (m == 0xFE)</div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad COM len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad APP len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160; }</div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160; L -= 2;</div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;</div>
+<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160; <span class="keywordflow">if</span> (m == 0xE0 &amp;&amp; L &gt;= 5) { <span class="comment">// JFIF APP0 segment</span></div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> tag[5] = {<span class="charliteral">&#39;J&#39;</span>,<span class="charliteral">&#39;F&#39;</span>,<span class="charliteral">&#39;I&#39;</span>,<span class="charliteral">&#39;F&#39;</span>,<span class="charliteral">&#39;\0&#39;</span>};</div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160; <span class="keywordtype">int</span> ok = 1;</div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 5; ++i)</div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; <span class="keywordflow">if</span> (stbi__get8(z-&gt;s) != tag[i])</div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; ok = 0;</div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; L -= 5;</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160; <span class="keywordflow">if</span> (ok)</div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; z-&gt;jfif = 1;</div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m == 0xEE &amp;&amp; L &gt;= 12) { <span class="comment">// Adobe APP14 segment</span></div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> tag[6] = {<span class="charliteral">&#39;A&#39;</span>,<span class="charliteral">&#39;d&#39;</span>,<span class="charliteral">&#39;o&#39;</span>,<span class="charliteral">&#39;b&#39;</span>,<span class="charliteral">&#39;e&#39;</span>,<span class="charliteral">&#39;\0&#39;</span>};</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160; <span class="keywordtype">int</span> ok = 1;</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 6; ++i)</div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; <span class="keywordflow">if</span> (stbi__get8(z-&gt;s) != tag[i])</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; ok = 0;</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; L -= 6;</div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; <span class="keywordflow">if</span> (ok) {</div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; stbi__get8(z-&gt;s); <span class="comment">// version</span></div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; stbi__get16be(z-&gt;s); <span class="comment">// flags0</span></div>
+<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; stbi__get16be(z-&gt;s); <span class="comment">// flags1</span></div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; z-&gt;app14_color_transform = stbi__get8(z-&gt;s); <span class="comment">// color transform</span></div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; L -= 6;</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; }</div>
+<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; }</div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; stbi__skip(z-&gt;s, L);</div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; }</div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160;</div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;unknown marker&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160;}</div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160;</div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160;<span class="comment">// after we see SOS</span></div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__process_scan_header(stbi__jpeg *z)</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160;{</div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; <span class="keywordtype">int</span> Ls = stbi__get16be(z-&gt;s);</div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160; z-&gt;scan_n = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keywordflow">if</span> (z-&gt;scan_n &lt; 1 || z-&gt;scan_n &gt; 4 || z-&gt;scan_n &gt; (<span class="keywordtype">int</span>) z-&gt;s-&gt;img_n) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOS component count&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; <span class="keywordflow">if</span> (Ls != 6+2*z-&gt;scan_n) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOS len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;scan_n; ++i) {</div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; <span class="keywordtype">int</span> <span class="keywordtype">id</span> = stbi__get8(z-&gt;s), which;</div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; <span class="keywordtype">int</span> q = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; <span class="keywordflow">for</span> (which = 0; which &lt; z-&gt;s-&gt;img_n; ++which)</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[which].id == <span class="keywordtype">id</span>)</div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; <span class="keywordflow">if</span> (which == z-&gt;s-&gt;img_n) <span class="keywordflow">return</span> 0; <span class="comment">// no match</span></div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; z-&gt;img_comp[which].hd = q &gt;&gt; 4; <span class="keywordflow">if</span> (z-&gt;img_comp[which].hd &gt; 3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad DC huff&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; z-&gt;img_comp[which].ha = q &amp; 15; <span class="keywordflow">if</span> (z-&gt;img_comp[which].ha &gt; 3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad AC huff&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; z-&gt;order[i] = which;</div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160; }</div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160;</div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; {</div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; <span class="keywordtype">int</span> aa;</div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; z-&gt;spec_start = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; z-&gt;spec_end = stbi__get8(z-&gt;s); <span class="comment">// should be 63, but might be 0</span></div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; aa = stbi__get8(z-&gt;s);</div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; z-&gt;succ_high = (aa &gt;&gt; 4);</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; z-&gt;succ_low = (aa &amp; 15);</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; <span class="keywordflow">if</span> (z-&gt;progressive) {</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; <span class="keywordflow">if</span> (z-&gt;spec_start &gt; 63 || z-&gt;spec_end &gt; 63 || z-&gt;spec_start &gt; z-&gt;spec_end || z-&gt;succ_high &gt; 13 || z-&gt;succ_low &gt; 13)</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOS&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; <span class="keywordflow">if</span> (z-&gt;spec_start != 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOS&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; <span class="keywordflow">if</span> (z-&gt;succ_high != 0 || z-&gt;succ_low != 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOS&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; z-&gt;spec_end = 63;</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; }</div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; }</div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160;</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;}</div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;</div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__free_jpeg_components(stbi__jpeg *z, <span class="keywordtype">int</span> ncomp, <span class="keywordtype">int</span> why)</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;{</div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; ncomp; ++i) {</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].raw_data) {</div>
+<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; STBI_FREE(z-&gt;img_comp[i].raw_data);</div>
+<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; z-&gt;img_comp[i].raw_data = NULL;</div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; z-&gt;img_comp[i].data = NULL;</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; }</div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].raw_coeff) {</div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; STBI_FREE(z-&gt;img_comp[i].raw_coeff);</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; z-&gt;img_comp[i].raw_coeff = 0;</div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; z-&gt;img_comp[i].coeff = 0;</div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; }</div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].linebuf) {</div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; STBI_FREE(z-&gt;img_comp[i].linebuf);</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; z-&gt;img_comp[i].linebuf = NULL;</div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; }</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; }</div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; <span class="keywordflow">return</span> why;</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;}</div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;</div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__process_frame_header(stbi__jpeg *z, <span class="keywordtype">int</span> scan)</div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;{</div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; stbi__context *s = z-&gt;s;</div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; <span class="keywordtype">int</span> Lf,p,i,q, h_max=1,v_max=1,c;</div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; Lf = stbi__get16be(s); <span class="keywordflow">if</span> (Lf &lt; 11) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOF len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>); <span class="comment">// JPEG</span></div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; p = stbi__get8(s); <span class="keywordflow">if</span> (p != 8) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;only 8-bit&quot;</span>,<span class="stringliteral">&quot;JPEG format not supported: 8-bit only&quot;</span>); <span class="comment">// JPEG baseline</span></div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; s-&gt;img_y = stbi__get16be(s); <span class="keywordflow">if</span> (s-&gt;img_y == 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no header height&quot;</span>, <span class="stringliteral">&quot;JPEG format not supported: delayed height&quot;</span>); <span class="comment">// Legal, but we don&#39;t handle it--but neither does IJG</span></div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; s-&gt;img_x = stbi__get16be(s); <span class="keywordflow">if</span> (s-&gt;img_x == 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;0 width&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>); <span class="comment">// JPEG requires</span></div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; c = stbi__get8(s);</div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; <span class="keywordflow">if</span> (c != 3 &amp;&amp; c != 1 &amp;&amp; c != 4) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad component count&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; s-&gt;img_n = c;</div>
+<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; c; ++i) {</div>
+<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160; z-&gt;img_comp[i].data = NULL;</div>
+<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; z-&gt;img_comp[i].linebuf = NULL;</div>
+<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160; }</div>
+<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div>
+<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160; <span class="keywordflow">if</span> (Lf != 8+3*s-&gt;img_n) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad SOF len&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;</div>
+<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; z-&gt;rgb = 0;</div>
+<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; s-&gt;img_n; ++i) {</div>
+<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> rgb[3] = { <span class="charliteral">&#39;R&#39;</span>, <span class="charliteral">&#39;G&#39;</span>, <span class="charliteral">&#39;B&#39;</span> };</div>
+<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; z-&gt;img_comp[i].id = stbi__get8(s);</div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <span class="keywordflow">if</span> (s-&gt;img_n == 3 &amp;&amp; z-&gt;img_comp[i].id == rgb[i])</div>
+<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; ++z-&gt;rgb;</div>
+<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; q = stbi__get8(s);</div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; z-&gt;img_comp[i].h = (q &gt;&gt; 4); <span class="keywordflow">if</span> (!z-&gt;img_comp[i].h || z-&gt;img_comp[i].h &gt; 4) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad H&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; z-&gt;img_comp[i].v = q &amp; 15; <span class="keywordflow">if</span> (!z-&gt;img_comp[i].v || z-&gt;img_comp[i].v &gt; 4) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad V&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; z-&gt;img_comp[i].tq = stbi__get8(s); <span class="keywordflow">if</span> (z-&gt;img_comp[i].tq &gt; 3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad TQ&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; }</div>
+<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160;</div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; <span class="keywordflow">if</span> (scan != STBI__SCAN_load) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;</div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(s-&gt;img_x, s-&gt;img_y, s-&gt;img_n, 0)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;Image too large to decode&quot;</span>);</div>
+<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; s-&gt;img_n; ++i) {</div>
+<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].h &gt; h_max) h_max = z-&gt;img_comp[i].h;</div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].v &gt; v_max) v_max = z-&gt;img_comp[i].v;</div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; }</div>
+<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;</div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; <span class="comment">// compute interleaved mcu info</span></div>
+<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; z-&gt;img_h_max = h_max;</div>
+<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; z-&gt;img_v_max = v_max;</div>
+<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; z-&gt;img_mcu_w = h_max * 8;</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; z-&gt;img_mcu_h = v_max * 8;</div>
+<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; <span class="comment">// these sizes can&#39;t be more than 17 bits</span></div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; z-&gt;img_mcu_x = (s-&gt;img_x + z-&gt;img_mcu_w-1) / z-&gt;img_mcu_w;</div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; z-&gt;img_mcu_y = (s-&gt;img_y + z-&gt;img_mcu_h-1) / z-&gt;img_mcu_h;</div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160;</div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; s-&gt;img_n; ++i) {</div>
+<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; <span class="comment">// number of effective pixels (e.g. for non-interleaved MCU)</span></div>
+<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160; z-&gt;img_comp[i].x = (s-&gt;img_x * z-&gt;img_comp[i].h + h_max-1) / h_max;</div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; z-&gt;img_comp[i].y = (s-&gt;img_y * z-&gt;img_comp[i].v + v_max-1) / v_max;</div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="comment">// to simplify generation, we&#39;ll allocate enough memory to decode</span></div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; <span class="comment">// the bogus oversized data from using interleaved MCUs and their</span></div>
+<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <span class="comment">// big blocks (e.g. a 16x16 iMCU on an image of width 33); we won&#39;t</span></div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; <span class="comment">// discard the extra data until colorspace conversion</span></div>
+<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; <span class="comment">//</span></div>
+<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; <span class="comment">// img_mcu_x, img_mcu_y: &lt;=17 bits; comp[i].h and .v are &lt;=4 (checked earlier)</span></div>
+<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; <span class="comment">// so these muls can&#39;t overflow with 32-bit ints (which we require)</span></div>
+<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; z-&gt;img_comp[i].w2 = z-&gt;img_mcu_x * z-&gt;img_comp[i].h * 8;</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; z-&gt;img_comp[i].h2 = z-&gt;img_mcu_y * z-&gt;img_comp[i].v * 8;</div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; z-&gt;img_comp[i].coeff = 0;</div>
+<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; z-&gt;img_comp[i].raw_coeff = 0;</div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; z-&gt;img_comp[i].linebuf = NULL;</div>
+<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; z-&gt;img_comp[i].raw_data = stbi__malloc_mad2(z-&gt;img_comp[i].w2, z-&gt;img_comp[i].h2, 15);</div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].raw_data == NULL)</div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="keywordflow">return</span> stbi__free_jpeg_components(z, i+1, stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>));</div>
+<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; <span class="comment">// align blocks for idct using mmx/sse</span></div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; z-&gt;img_comp[i].data = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>*) (((<span class="keywordtype">size_t</span>) z-&gt;img_comp[i].raw_data + 15) &amp; ~15);</div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; <span class="keywordflow">if</span> (z-&gt;progressive) {</div>
+<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; <span class="comment">// w2, h2 are multiples of 8 (see above)</span></div>
+<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; z-&gt;img_comp[i].coeff_w = z-&gt;img_comp[i].w2 / 8;</div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; z-&gt;img_comp[i].coeff_h = z-&gt;img_comp[i].h2 / 8;</div>
+<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; z-&gt;img_comp[i].raw_coeff = stbi__malloc_mad3(z-&gt;img_comp[i].w2, z-&gt;img_comp[i].h2, <span class="keyword">sizeof</span>(<span class="keywordtype">short</span>), 15);</div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; <span class="keywordflow">if</span> (z-&gt;img_comp[i].raw_coeff == NULL)</div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="keywordflow">return</span> stbi__free_jpeg_components(z, i+1, stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>));</div>
+<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; z-&gt;img_comp[i].coeff = (<span class="keywordtype">short</span>*) (((<span class="keywordtype">size_t</span>) z-&gt;img_comp[i].raw_coeff + 15) &amp; ~15);</div>
+<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; }</div>
+<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; }</div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;</div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;}</div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;</div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;<span class="comment">// use comparisons since in some cases we handle more than one case (e.g. SOF)</span></div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;<span class="preprocessor">#define stbi__DNL(x) ((x) == 0xdc)</span></div>
+<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__SOI(x) ((x) == 0xd8)</span></div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__EOI(x) ((x) == 0xd9)</span></div>
+<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2)</span></div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define stbi__SOS(x) ((x) == 0xda)</span></div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160;<span class="preprocessor">#define stbi__SOF_progressive(x) ((x) == 0xc2)</span></div>
+<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__decode_jpeg_header(stbi__jpeg *z, <span class="keywordtype">int</span> scan)</div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160;{</div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; <span class="keywordtype">int</span> m;</div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; z-&gt;jfif = 0;</div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; z-&gt;app14_color_transform = -1; <span class="comment">// valid values are 0,1,2</span></div>
+<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; z-&gt;marker = STBI__MARKER_none; <span class="comment">// initialize cached marker to empty</span></div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; m = stbi__get_marker(z);</div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; <span class="keywordflow">if</span> (!stbi__SOI(m)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no SOI&quot;</span>,<span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="keywordflow">if</span> (scan == STBI__SCAN_type) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; m = stbi__get_marker(z);</div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <span class="keywordflow">while</span> (!stbi__SOF(m)) {</div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; <span class="keywordflow">if</span> (!stbi__process_marker(z,m)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; m = stbi__get_marker(z);</div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160; <span class="keywordflow">while</span> (m == STBI__MARKER_none) {</div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; <span class="comment">// some files have extra padding after their blocks, so ok, we&#39;ll scan</span></div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(z-&gt;s)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no SOF&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; m = stbi__get_marker(z);</div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; }</div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160; }</div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; z-&gt;progressive = stbi__SOF_progressive(m);</div>
+<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; <span class="keywordflow">if</span> (!stbi__process_frame_header(z, scan)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;}</div>
+<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160;</div>
+<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;<span class="comment">// decode image to YCbCr format</span></div>
+<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__decode_jpeg_image(stbi__jpeg *j)</div>
+<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;{</div>
+<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160; <span class="keywordtype">int</span> m;</div>
+<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; <span class="keywordflow">for</span> (m = 0; m &lt; 4; m++) {</div>
+<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; j-&gt;img_comp[m].raw_data = NULL;</div>
+<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; j-&gt;img_comp[m].raw_coeff = NULL;</div>
+<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; }</div>
+<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; j-&gt;restart_interval = 0;</div>
+<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; <span class="keywordflow">if</span> (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; m = stbi__get_marker(j);</div>
+<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; <span class="keywordflow">while</span> (!stbi__EOI(m)) {</div>
+<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; <span class="keywordflow">if</span> (stbi__SOS(m)) {</div>
+<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; <span class="keywordflow">if</span> (!stbi__process_scan_header(j)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; <span class="keywordflow">if</span> (!stbi__parse_entropy_coded_data(j)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; <span class="keywordflow">if</span> (j-&gt;marker == STBI__MARKER_none ) {</div>
+<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; <span class="comment">// handle 0s at the end of image data from IP Kamera 9060</span></div>
+<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(j-&gt;s)) {</div>
+<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; <span class="keywordtype">int</span> x = stbi__get8(j-&gt;s);</div>
+<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160; <span class="keywordflow">if</span> (x == 255) {</div>
+<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; j-&gt;marker = stbi__get8(j-&gt;s);</div>
+<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; }</div>
+<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; }</div>
+<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; <span class="comment">// if we reach eof without hitting a marker, stbi__get_marker() below will fail and we&#39;ll eventually return 0</span></div>
+<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160; }</div>
+<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stbi__DNL(m)) {</div>
+<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; <span class="keywordtype">int</span> Ld = stbi__get16be(j-&gt;s);</div>
+<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; stbi__uint32 NL = stbi__get16be(j-&gt;s);</div>
+<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; <span class="keywordflow">if</span> (Ld != 4) stbi__err(<span class="stringliteral">&quot;bad DNL len&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; <span class="keywordflow">if</span> (NL != j-&gt;s-&gt;img_y) stbi__err(<span class="stringliteral">&quot;bad DNL height&quot;</span>, <span class="stringliteral">&quot;Corrupt JPEG&quot;</span>);</div>
+<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; <span class="keywordflow">if</span> (!stbi__process_marker(j, m)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; }</div>
+<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; m = stbi__get_marker(j);</div>
+<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; }</div>
+<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; <span class="keywordflow">if</span> (j-&gt;progressive)</div>
+<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; stbi__jpeg_finish(j);</div>
+<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160;}</div>
+<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160;</div>
+<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;<span class="comment">// static jfif-centered resampling (across block boundaries)</span></div>
+<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;</div>
+<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;<span class="keyword">typedef</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *(*resample_row_func)(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in0, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in1,</div>
+<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs);</div>
+<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160;</div>
+<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160;<span class="preprocessor">#define stbi__div4(x) ((stbi_uc) ((x) &gt;&gt; 2))</span></div>
+<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *resample_row_1(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;{</div>
+<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160; STBI_NOTUSED(out);</div>
+<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; STBI_NOTUSED(in_far);</div>
+<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160; STBI_NOTUSED(w);</div>
+<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; STBI_NOTUSED(hs);</div>
+<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; <span class="keywordflow">return</span> in_near;</div>
+<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;}</div>
+<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160;</div>
+<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi__resample_row_v_2(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160;{</div>
+<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; <span class="comment">// need to generate two samples vertically for every one in input</span></div>
+<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160; STBI_NOTUSED(hs);</div>
+<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w; ++i)</div>
+<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2);</div>
+<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;}</div>
+<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160;</div>
+<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* stbi__resample_row_h_2(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160;{</div>
+<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160; <span class="comment">// need to generate two samples horizontally for every one in input</span></div>
+<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *input = in_near;</div>
+<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160;</div>
+<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160; <span class="keywordflow">if</span> (w == 1) {</div>
+<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <span class="comment">// if only one sample, can&#39;t do any interpolation</span></div>
+<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; out[0] = out[1] = input[0];</div>
+<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160; }</div>
+<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;</div>
+<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; out[0] = input[0];</div>
+<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; out[1] = stbi__div4(input[0]*3 + input[1] + 2);</div>
+<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; <span class="keywordflow">for</span> (i=1; i &lt; w-1; ++i) {</div>
+<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; <span class="keywordtype">int</span> n = 3*input[i]+2;</div>
+<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; out[i*2+0] = stbi__div4(n+input[i-1]);</div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; out[i*2+1] = stbi__div4(n+input[i+1]);</div>
+<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; }</div>
+<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2);</div>
+<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; out[i*2+1] = input[w-1];</div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;</div>
+<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; STBI_NOTUSED(in_far);</div>
+<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; STBI_NOTUSED(hs);</div>
+<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160;</div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160;}</div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160;</div>
+<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;<span class="preprocessor">#define stbi__div16(x) ((stbi_uc) ((x) &gt;&gt; 4))</span></div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__resample_row_hv_2(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160;{</div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <span class="comment">// need to generate 2x2 samples for every one in input</span></div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; <span class="keywordtype">int</span> i,t0,t1;</div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; <span class="keywordflow">if</span> (w == 1) {</div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);</div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; }</div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;</div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; t1 = 3*in_near[0] + in_far[0];</div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; out[0] = stbi__div4(t1+2);</div>
+<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; <span class="keywordflow">for</span> (i=1; i &lt; w; ++i) {</div>
+<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; t0 = t1;</div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; t1 = 3*in_near[i]+in_far[i];</div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; out[i*2-1] = stbi__div16(3*t0 + t1 + 8);</div>
+<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; out[i*2 ] = stbi__div16(3*t1 + t0 + 8);</div>
+<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; }</div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; out[w*2-1] = stbi__div4(t1+2);</div>
+<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160;</div>
+<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; STBI_NOTUSED(hs);</div>
+<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160;</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160;}</div>
+<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160;</div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160;<span class="preprocessor">#if defined(STBI_SSE2) || defined(STBI_NEON)</span></div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__resample_row_hv_2_simd(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160;{</div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; <span class="comment">// need to generate 2x2 samples for every one in input</span></div>
+<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; <span class="keywordtype">int</span> i=0,t0,t1;</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160;</div>
+<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; <span class="keywordflow">if</span> (w == 1) {</div>
+<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);</div>
+<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; }</div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;</div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; t1 = 3*in_near[0] + in_far[0];</div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; <span class="comment">// process groups of 8 pixels for as long as we can.</span></div>
+<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; <span class="comment">// note we can&#39;t handle the last pixel in a row in this loop</span></div>
+<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; <span class="comment">// because we need to handle the filter boundary conditions.</span></div>
+<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="keywordflow">for</span> (; i &lt; ((w-1) &amp; ~7); i += 8) {</div>
+<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;<span class="preprocessor">#if defined(STBI_SSE2)</span></div>
+<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;<span class="preprocessor"></span> <span class="comment">// load and perform the vertical filtering pass</span></div>
+<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="comment">// this uses 3*x + y = 4*x + (y - x)</span></div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; __m128i zero = _mm_setzero_si128();</div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i));</div>
+<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i));</div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; __m128i farw = _mm_unpacklo_epi8(farb, zero);</div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; __m128i nearw = _mm_unpacklo_epi8(nearb, zero);</div>
+<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; __m128i diff = _mm_sub_epi16(farw, nearw);</div>
+<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; __m128i nears = _mm_slli_epi16(nearw, 2);</div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; __m128i curr = _mm_add_epi16(nears, diff); <span class="comment">// current row</span></div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160;</div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; <span class="comment">// horizontal filter works the same based on shifted vers of current</span></div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; <span class="comment">// row. &quot;prev&quot; is current row shifted right by 1 pixel; we need to</span></div>
+<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; <span class="comment">// insert the previous pixel value (from t1).</span></div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; <span class="comment">// &quot;next&quot; is current row shifted left by 1 pixel, with first pixel</span></div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160; <span class="comment">// of next block of 8 pixels added in.</span></div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; __m128i prv0 = _mm_slli_si128(curr, 2);</div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; __m128i nxt0 = _mm_srli_si128(curr, 2);</div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; __m128i prev = _mm_insert_epi16(prv0, t1, 0);</div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7);</div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160;</div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <span class="comment">// horizontal filter, polyphase implementation since it&#39;s convenient:</span></div>
+<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; <span class="comment">// even pixels = 3*cur + prev = cur*4 + (prev - cur)</span></div>
+<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; <span class="comment">// odd pixels = 3*cur + next = cur*4 + (next - cur)</span></div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; <span class="comment">// note the shared term.</span></div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; __m128i bias = _mm_set1_epi16(8);</div>
+<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; __m128i curs = _mm_slli_epi16(curr, 2);</div>
+<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; __m128i prvd = _mm_sub_epi16(prev, curr);</div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; __m128i nxtd = _mm_sub_epi16(next, curr);</div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; __m128i curb = _mm_add_epi16(curs, bias);</div>
+<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; __m128i even = _mm_add_epi16(prvd, curb);</div>
+<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160; __m128i odd = _mm_add_epi16(nxtd, curb);</div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160;</div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; <span class="comment">// interleave even and odd pixels, then undo scaling.</span></div>
+<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; __m128i int0 = _mm_unpacklo_epi16(even, odd);</div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; __m128i int1 = _mm_unpackhi_epi16(even, odd);</div>
+<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; __m128i de0 = _mm_srli_epi16(int0, 4);</div>
+<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; __m128i de1 = _mm_srli_epi16(int1, 4);</div>
+<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160;</div>
+<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; <span class="comment">// pack and write output</span></div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; __m128i outv = _mm_packus_epi16(de0, de1);</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; _mm_storeu_si128((__m128i *) (out + i*2), outv);</div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160;<span class="preprocessor">#elif defined(STBI_NEON)</span></div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160;<span class="preprocessor"></span> <span class="comment">// load and perform the vertical filtering pass</span></div>
+<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160; <span class="comment">// this uses 3*x + y = 4*x + (y - x)</span></div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; uint8x8_t farb = vld1_u8(in_far + i);</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160; uint8x8_t nearb = vld1_u8(in_near + i);</div>
+<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));</div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160; int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; int16x8_t curr = vaddq_s16(nears, diff); <span class="comment">// current row</span></div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160;</div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <span class="comment">// horizontal filter works the same based on shifted vers of current</span></div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160; <span class="comment">// row. &quot;prev&quot; is current row shifted right by 1 pixel; we need to</span></div>
+<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160; <span class="comment">// insert the previous pixel value (from t1).</span></div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160; <span class="comment">// &quot;next&quot; is current row shifted left by 1 pixel, with first pixel</span></div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160; <span class="comment">// of next block of 8 pixels added in.</span></div>
+<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160; int16x8_t prv0 = vextq_s16(curr, curr, 7);</div>
+<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160; int16x8_t nxt0 = vextq_s16(curr, curr, 1);</div>
+<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);</div>
+<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7);</div>
+<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160;</div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160; <span class="comment">// horizontal filter, polyphase implementation since it&#39;s convenient:</span></div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160; <span class="comment">// even pixels = 3*cur + prev = cur*4 + (prev - cur)</span></div>
+<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160; <span class="comment">// odd pixels = 3*cur + next = cur*4 + (next - cur)</span></div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160; <span class="comment">// note the shared term.</span></div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; int16x8_t curs = vshlq_n_s16(curr, 2);</div>
+<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160; int16x8_t prvd = vsubq_s16(prev, curr);</div>
+<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; int16x8_t nxtd = vsubq_s16(next, curr);</div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; int16x8_t even = vaddq_s16(curs, prvd);</div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; int16x8_t odd = vaddq_s16(curs, nxtd);</div>
+<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160;</div>
+<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; <span class="comment">// undo scaling and round, then store with even/odd phases interleaved</span></div>
+<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; uint8x8x2_t o;</div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; o.val[0] = vqrshrun_n_s16(even, 4);</div>
+<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; o.val[1] = vqrshrun_n_s16(odd, 4);</div>
+<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; vst2_u8(out + i*2, o);</div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; <span class="comment">// &quot;previous&quot; value for next iter</span></div>
+<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; t1 = 3*in_near[i+7] + in_far[i+7];</div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160; }</div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160;</div>
+<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; t0 = t1;</div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; t1 = 3*in_near[i] + in_far[i];</div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; out[i*2] = stbi__div16(3*t1 + t0 + 8);</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160;</div>
+<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; <span class="keywordflow">for</span> (++i; i &lt; w; ++i) {</div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; t0 = t1;</div>
+<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; t1 = 3*in_near[i]+in_far[i];</div>
+<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; out[i*2-1] = stbi__div16(3*t0 + t1 + 8);</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; out[i*2 ] = stbi__div16(3*t1 + t0 + 8);</div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; }</div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; out[w*2-1] = stbi__div4(t1+2);</div>
+<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160;</div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; STBI_NOTUSED(hs);</div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160;</div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160;}</div>
+<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__resample_row_generic(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_near, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in_far, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> hs)</div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160;{</div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; <span class="comment">// resample with nearest-neighbor</span></div>
+<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; STBI_NOTUSED(in_far);</div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w; ++i)</div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; hs; ++j)</div>
+<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; out[i*hs+j] = in_near[i];</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160;}</div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;</div>
+<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160;<span class="comment">// this is a reduced-precision calculation of YCbCr-to-RGB introduced</span></div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160;<span class="comment">// to make sure the code produces the same results in both SIMD and scalar</span></div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160;<span class="preprocessor">#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) &lt;&lt; 8)</span></div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> stbi__YCbCr_to_RGB_row(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *y, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *pcb, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *pcr, <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> step)</div>
+<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160;{</div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; count; ++i) {</div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; <span class="keywordtype">int</span> y_fixed = (y[i] &lt;&lt; 20) + (1&lt;&lt;19); <span class="comment">// rounding</span></div>
+<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; <span class="keywordtype">int</span> r,g,b;</div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; <span class="keywordtype">int</span> cr = pcr[i] - 128;</div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; <span class="keywordtype">int</span> cb = pcb[i] - 128;</div>
+<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; r = y_fixed + cr* stbi__float2fixed(1.40200f);</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) &amp; 0xffff0000);</div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; b = y_fixed + cb* stbi__float2fixed(1.77200f);</div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; r &gt;&gt;= 20;</div>
+<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; g &gt;&gt;= 20;</div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; b &gt;&gt;= 20;</div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) r &gt; 255) { <span class="keywordflow">if</span> (r &lt; 0) r = 0; <span class="keywordflow">else</span> r = 255; }</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) g &gt; 255) { <span class="keywordflow">if</span> (g &lt; 0) g = 0; <span class="keywordflow">else</span> g = 255; }</div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) b &gt; 255) { <span class="keywordflow">if</span> (b &lt; 0) b = 0; <span class="keywordflow">else</span> b = 255; }</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; out[0] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)r;</div>
+<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; out[1] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)g;</div>
+<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; out[2] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)b;</div>
+<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; out[3] = 255;</div>
+<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; out += step;</div>
+<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; }</div>
+<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160;}</div>
+<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160;</div>
+<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160;<span class="preprocessor">#if defined(STBI_SSE2) || defined(STBI_NEON)</span></div>
+<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> stbi__YCbCr_to_RGB_simd(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *y, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *pcb, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *pcr, <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> step)</div>
+<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160;{</div>
+<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; <span class="keywordtype">int</span> i = 0;</div>
+<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160;</div>
+<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160;<span class="preprocessor">#ifdef STBI_SSE2</span></div>
+<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160;<span class="preprocessor"></span> <span class="comment">// step == 3 is pretty ugly on the final interleave, and i&#39;m not convinced</span></div>
+<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; <span class="comment">// it&#39;s useful in practice (you wouldn&#39;t use it for textures, for example).</span></div>
+<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; <span class="comment">// so just accelerate step == 4 case.</span></div>
+<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; <span class="keywordflow">if</span> (step == 4) {</div>
+<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; <span class="comment">// this is a fairly straightforward implementation and not super-optimized.</span></div>
+<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; __m128i signflip = _mm_set1_epi8(-0x80);</div>
+<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; __m128i cr_const0 = _mm_set1_epi16( (<span class="keywordtype">short</span>) ( 1.40200f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; __m128i cr_const1 = _mm_set1_epi16( - (<span class="keywordtype">short</span>) ( 0.71414f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; __m128i cb_const0 = _mm_set1_epi16( - (<span class="keywordtype">short</span>) ( 0.34414f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; __m128i cb_const1 = _mm_set1_epi16( (<span class="keywordtype">short</span>) ( 1.77200f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; __m128i y_bias = _mm_set1_epi8((<span class="keywordtype">char</span>) (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) 128);</div>
+<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; __m128i xw = _mm_set1_epi16(255); <span class="comment">// alpha channel</span></div>
+<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160;</div>
+<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; <span class="keywordflow">for</span> (; i+7 &lt; count; i += 8) {</div>
+<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; <span class="comment">// load</span></div>
+<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i));</div>
+<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i));</div>
+<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i));</div>
+<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); <span class="comment">// -128</span></div>
+<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); <span class="comment">// -128</span></div>
+<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160;</div>
+<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; <span class="comment">// unpack to short (and left-shift cr, cb by 8)</span></div>
+<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes);</div>
+<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);</div>
+<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);</div>
+<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160;</div>
+<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; <span class="comment">// color transform</span></div>
+<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160; __m128i yws = _mm_srli_epi16(yw, 4);</div>
+<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160; __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);</div>
+<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160; __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);</div>
+<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);</div>
+<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160; __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);</div>
+<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; __m128i rws = _mm_add_epi16(cr0, yws);</div>
+<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; __m128i gwt = _mm_add_epi16(cb0, yws);</div>
+<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160; __m128i bws = _mm_add_epi16(yws, cb1);</div>
+<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160; __m128i gws = _mm_add_epi16(gwt, cr1);</div>
+<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;</div>
+<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160; <span class="comment">// descale</span></div>
+<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; __m128i rw = _mm_srai_epi16(rws, 4);</div>
+<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; __m128i bw = _mm_srai_epi16(bws, 4);</div>
+<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; __m128i gw = _mm_srai_epi16(gws, 4);</div>
+<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;</div>
+<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; <span class="comment">// back to byte, set up for transpose</span></div>
+<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160; __m128i brb = _mm_packus_epi16(rw, bw);</div>
+<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160; __m128i gxb = _mm_packus_epi16(gw, xw);</div>
+<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160;</div>
+<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; <span class="comment">// transpose to interleave channels</span></div>
+<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; __m128i t0 = _mm_unpacklo_epi8(brb, gxb);</div>
+<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; __m128i t1 = _mm_unpackhi_epi8(brb, gxb);</div>
+<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; __m128i o0 = _mm_unpacklo_epi16(t0, t1);</div>
+<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; __m128i o1 = _mm_unpackhi_epi16(t0, t1);</div>
+<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160;</div>
+<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; <span class="comment">// store</span></div>
+<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; _mm_storeu_si128((__m128i *) (out + 0), o0);</div>
+<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; _mm_storeu_si128((__m128i *) (out + 16), o1);</div>
+<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; out += 32;</div>
+<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; }</div>
+<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; }</div>
+<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160;<span class="preprocessor">#ifdef STBI_NEON</span></div>
+<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160;<span class="preprocessor"></span> <span class="comment">// in this version, step=3 support would be easy to add. but is there demand?</span></div>
+<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; <span class="keywordflow">if</span> (step == 4) {</div>
+<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; <span class="comment">// this is a fairly straightforward implementation and not super-optimized.</span></div>
+<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; uint8x8_t signflip = vdup_n_u8(0x80);</div>
+<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; int16x8_t cr_const0 = vdupq_n_s16( (<span class="keywordtype">short</span>) ( 1.40200f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; int16x8_t cr_const1 = vdupq_n_s16( - (<span class="keywordtype">short</span>) ( 0.71414f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; int16x8_t cb_const0 = vdupq_n_s16( - (<span class="keywordtype">short</span>) ( 0.34414f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; int16x8_t cb_const1 = vdupq_n_s16( (<span class="keywordtype">short</span>) ( 1.77200f*4096.0f+0.5f));</div>
+<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;</div>
+<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; <span class="keywordflow">for</span> (; i+7 &lt; count; i += 8) {</div>
+<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; <span class="comment">// load</span></div>
+<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; uint8x8_t y_bytes = vld1_u8(y + i);</div>
+<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160; uint8x8_t cr_bytes = vld1_u8(pcr + i);</div>
+<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160; uint8x8_t cb_bytes = vld1_u8(pcb + i);</div>
+<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160; int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));</div>
+<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));</div>
+<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160;</div>
+<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; <span class="comment">// expand to s16</span></div>
+<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));</div>
+<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; int16x8_t crw = vshll_n_s8(cr_biased, 7);</div>
+<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; int16x8_t cbw = vshll_n_s8(cb_biased, 7);</div>
+<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;</div>
+<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160; <span class="comment">// color transform</span></div>
+<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);</div>
+<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160; int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);</div>
+<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160; int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);</div>
+<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160; int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);</div>
+<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160; int16x8_t rws = vaddq_s16(yws, cr0);</div>
+<div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160; int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);</div>
+<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160; int16x8_t bws = vaddq_s16(yws, cb1);</div>
+<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160;</div>
+<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160; <span class="comment">// undo scaling, round, convert to byte</span></div>
+<div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160; uint8x8x4_t o;</div>
+<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160; o.val[0] = vqrshrun_n_s16(rws, 4);</div>
+<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160; o.val[1] = vqrshrun_n_s16(gws, 4);</div>
+<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160; o.val[2] = vqrshrun_n_s16(bws, 4);</div>
+<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160; o.val[3] = vdup_n_u8(255);</div>
+<div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160;</div>
+<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160; <span class="comment">// store, interleaving r/g/b/a</span></div>
+<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160; vst4_u8(out, o);</div>
+<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160; out += 8*4;</div>
+<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160; }</div>
+<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160; }</div>
+<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160; <span class="keywordflow">for</span> (; i &lt; count; ++i) {</div>
+<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160; <span class="keywordtype">int</span> y_fixed = (y[i] &lt;&lt; 20) + (1&lt;&lt;19); <span class="comment">// rounding</span></div>
+<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; <span class="keywordtype">int</span> r,g,b;</div>
+<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160; <span class="keywordtype">int</span> cr = pcr[i] - 128;</div>
+<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160; <span class="keywordtype">int</span> cb = pcb[i] - 128;</div>
+<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160; r = y_fixed + cr* stbi__float2fixed(1.40200f);</div>
+<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160; g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) &amp; 0xffff0000);</div>
+<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160; b = y_fixed + cb* stbi__float2fixed(1.77200f);</div>
+<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160; r &gt;&gt;= 20;</div>
+<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160; g &gt;&gt;= 20;</div>
+<div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160; b &gt;&gt;= 20;</div>
+<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) r &gt; 255) { <span class="keywordflow">if</span> (r &lt; 0) r = 0; <span class="keywordflow">else</span> r = 255; }</div>
+<div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) g &gt; 255) { <span class="keywordflow">if</span> (g &lt; 0) g = 0; <span class="keywordflow">else</span> g = 255; }</div>
+<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) b &gt; 255) { <span class="keywordflow">if</span> (b &lt; 0) b = 0; <span class="keywordflow">else</span> b = 255; }</div>
+<div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160; out[0] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)r;</div>
+<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160; out[1] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)g;</div>
+<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160; out[2] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)b;</div>
+<div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160; out[3] = 255;</div>
+<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160; out += step;</div>
+<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160; }</div>
+<div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160;}</div>
+<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;<span class="comment">// set up the kernels</span></div>
+<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__setup_jpeg(stbi__jpeg *j)</div>
+<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160;{</div>
+<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160; j-&gt;idct_block_kernel = stbi__idct_block;</div>
+<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160; j-&gt;YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;</div>
+<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160; j-&gt;resample_row_hv_2_kernel = stbi__resample_row_hv_2;</div>
+<div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160;</div>
+<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160;<span class="preprocessor">#ifdef STBI_SSE2</span></div>
+<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__sse2_available()) {</div>
+<div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160; j-&gt;idct_block_kernel = stbi__idct_simd;</div>
+<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160; j-&gt;YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;</div>
+<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160; j-&gt;resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;</div>
+<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; }</div>
+<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160;<span class="preprocessor">#ifdef STBI_NEON</span></div>
+<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160;<span class="preprocessor"></span> j-&gt;idct_block_kernel = stbi__idct_simd;</div>
+<div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160; j-&gt;YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;</div>
+<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160; j-&gt;resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;</div>
+<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160;</div>
+<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160;<span class="comment">// clean up the temporary component buffers</span></div>
+<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__cleanup_jpeg(stbi__jpeg *j)</div>
+<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160;{</div>
+<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160; stbi__free_jpeg_components(j, j-&gt;s-&gt;img_n, 0);</div>
+<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160;}</div>
+<div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160;</div>
+<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160;{</div>
+<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160; resample_row_func resample;</div>
+<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *line0,*line1;</div>
+<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160; <span class="keywordtype">int</span> hs,vs; <span class="comment">// expansion factor in each axis</span></div>
+<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160; <span class="keywordtype">int</span> w_lores; <span class="comment">// horizontal pixels pre-expansion</span></div>
+<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160; <span class="keywordtype">int</span> ystep; <span class="comment">// how far through vertical expansion we are</span></div>
+<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160; <span class="keywordtype">int</span> ypos; <span class="comment">// which pre-expansion row we&#39;re on</span></div>
+<div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160;} stbi__resample;</div>
+<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160;</div>
+<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160;<span class="comment">// fast 0..255 * 0..255 =&gt; 0..255 rounded multiplication</span></div>
+<div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__blinn_8x8(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> x, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> y)</div>
+<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>&#160;{</div>
+<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> t = x*y + 128;</div>
+<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) ((t + (t &gt;&gt;8)) &gt;&gt; 8);</div>
+<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160;}</div>
+<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160;</div>
+<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *load_jpeg_image(stbi__jpeg *z, <span class="keywordtype">int</span> *out_x, <span class="keywordtype">int</span> *out_y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160;{</div>
+<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160; <span class="keywordtype">int</span> n, decode_n, is_rgb;</div>
+<div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160; z-&gt;s-&gt;img_n = 0; <span class="comment">// make stbi__cleanup_jpeg safe</span></div>
+<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;</div>
+<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160; <span class="comment">// validate req_comp</span></div>
+<div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160; <span class="keywordflow">if</span> (req_comp &lt; 0 || req_comp &gt; 4) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad req_comp&quot;</span>, <span class="stringliteral">&quot;Internal error&quot;</span>);</div>
+<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160;</div>
+<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160; <span class="comment">// load a jpeg image from whichever source, but leave in YCbCr format</span></div>
+<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160; <span class="keywordflow">if</span> (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); <span class="keywordflow">return</span> NULL; }</div>
+<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160;</div>
+<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160; <span class="comment">// determine actual number of components to generate</span></div>
+<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160; n = req_comp ? req_comp : z-&gt;s-&gt;img_n &gt;= 3 ? 3 : 1;</div>
+<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160;</div>
+<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160; is_rgb = z-&gt;s-&gt;img_n == 3 &amp;&amp; (z-&gt;rgb == 3 || (z-&gt;app14_color_transform == 0 &amp;&amp; !z-&gt;jfif));</div>
+<div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160;</div>
+<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160; <span class="keywordflow">if</span> (z-&gt;s-&gt;img_n == 3 &amp;&amp; n &lt; 3 &amp;&amp; !is_rgb)</div>
+<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160; decode_n = 1;</div>
+<div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160; decode_n = z-&gt;s-&gt;img_n;</div>
+<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;</div>
+<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160; <span class="comment">// resample and color-convert</span></div>
+<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160; {</div>
+<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160; <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *output;</div>
+<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *coutput[4];</div>
+<div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>&#160;</div>
+<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160; stbi__resample res_comp[4];</div>
+<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160;</div>
+<div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; decode_n; ++k) {</div>
+<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160; stbi__resample *r = &amp;res_comp[k];</div>
+<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160;</div>
+<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160; <span class="comment">// allocate line buffer big enough for upsampling off the edges</span></div>
+<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160; <span class="comment">// with upsample factor of 4</span></div>
+<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160; z-&gt;img_comp[k].linebuf = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc(z-&gt;s-&gt;img_x + 3);</div>
+<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160; <span class="keywordflow">if</span> (!z-&gt;img_comp[k].linebuf) { stbi__cleanup_jpeg(z); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>); }</div>
+<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160;</div>
+<div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160; r-&gt;hs = z-&gt;img_h_max / z-&gt;img_comp[k].h;</div>
+<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160; r-&gt;vs = z-&gt;img_v_max / z-&gt;img_comp[k].v;</div>
+<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160; r-&gt;ystep = r-&gt;vs &gt;&gt; 1;</div>
+<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160; r-&gt;w_lores = (z-&gt;s-&gt;img_x + r-&gt;hs-1) / r-&gt;hs;</div>
+<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160; r-&gt;ypos = 0;</div>
+<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160; r-&gt;line0 = r-&gt;line1 = z-&gt;img_comp[k].data;</div>
+<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160;</div>
+<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160; if (r-&gt;hs == 1 &amp;&amp; r-&gt;vs == 1) r-&gt;resample = resample_row_1;</div>
+<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r-&gt;hs == 1 &amp;&amp; r-&gt;vs == 2) r-&gt;resample = stbi__resample_row_v_2;</div>
+<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r-&gt;hs == 2 &amp;&amp; r-&gt;vs == 1) r-&gt;resample = stbi__resample_row_h_2;</div>
+<div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r-&gt;hs == 2 &amp;&amp; r-&gt;vs == 2) r-&gt;resample = z-&gt;resample_row_hv_2_kernel;</div>
+<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160; <span class="keywordflow">else</span> r-&gt;resample = stbi__resample_row_generic;</div>
+<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160; }</div>
+<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160;</div>
+<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160; <span class="comment">// can&#39;t error after this so, this is safe</span></div>
+<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160; output = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(n, z-&gt;s-&gt;img_x, z-&gt;s-&gt;img_y, 1);</div>
+<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160; <span class="keywordflow">if</span> (!output) { stbi__cleanup_jpeg(z); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>); }</div>
+<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>&#160;</div>
+<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160; <span class="comment">// now go ahead and resample</span></div>
+<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; z-&gt;s-&gt;img_y; ++j) {</div>
+<div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out = output + n * z-&gt;s-&gt;img_x * j;</div>
+<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; decode_n; ++k) {</div>
+<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160; stbi__resample *r = &amp;res_comp[k];</div>
+<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160; <span class="keywordtype">int</span> y_bot = r-&gt;ystep &gt;= (r-&gt;vs &gt;&gt; 1);</div>
+<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160; coutput[k] = r-&gt;resample(z-&gt;img_comp[k].linebuf,</div>
+<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160; y_bot ? r-&gt;line1 : r-&gt;line0,</div>
+<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160; y_bot ? r-&gt;line0 : r-&gt;line1,</div>
+<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160; r-&gt;w_lores, r-&gt;hs);</div>
+<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160; <span class="keywordflow">if</span> (++r-&gt;ystep &gt;= r-&gt;vs) {</div>
+<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160; r-&gt;ystep = 0;</div>
+<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160; r-&gt;line0 = r-&gt;line1;</div>
+<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160; <span class="keywordflow">if</span> (++r-&gt;ypos &lt; z-&gt;img_comp[k].y)</div>
+<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160; r-&gt;line1 += z-&gt;img_comp[k].w2;</div>
+<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160; }</div>
+<div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>&#160; }</div>
+<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160; <span class="keywordflow">if</span> (n &gt;= 3) {</div>
+<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *y = coutput[0];</div>
+<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160; <span class="keywordflow">if</span> (z-&gt;s-&gt;img_n == 3) {</div>
+<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160; <span class="keywordflow">if</span> (is_rgb) {</div>
+<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160; out[0] = y[i];</div>
+<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160; out[1] = coutput[1][i];</div>
+<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160; out[2] = coutput[2][i];</div>
+<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160; out[3] = 255;</div>
+<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160; out += n;</div>
+<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160; }</div>
+<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160; z-&gt;YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z-&gt;s-&gt;img_x, n);</div>
+<div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160; }</div>
+<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (z-&gt;s-&gt;img_n == 4) {</div>
+<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160; <span class="keywordflow">if</span> (z-&gt;app14_color_transform == 0) { <span class="comment">// CMYK</span></div>
+<div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> m = coutput[3][i];</div>
+<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160; out[0] = stbi__blinn_8x8(coutput[0][i], m);</div>
+<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160; out[1] = stbi__blinn_8x8(coutput[1][i], m);</div>
+<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160; out[2] = stbi__blinn_8x8(coutput[2][i], m);</div>
+<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160; out[3] = 255;</div>
+<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160; out += n;</div>
+<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160; }</div>
+<div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (z-&gt;app14_color_transform == 2) { <span class="comment">// YCCK</span></div>
+<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160; z-&gt;YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z-&gt;s-&gt;img_x, n);</div>
+<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> m = coutput[3][i];</div>
+<div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160; out[0] = stbi__blinn_8x8(255 - out[0], m);</div>
+<div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160; out[1] = stbi__blinn_8x8(255 - out[1], m);</div>
+<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160; out[2] = stbi__blinn_8x8(255 - out[2], m);</div>
+<div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160; out += n;</div>
+<div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160; }</div>
+<div class="line"><a name="l03630"></a><span class="lineno"> 3630</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// YCbCr + alpha? Ignore the fourth channel for now</span></div>
+<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160; z-&gt;YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z-&gt;s-&gt;img_x, n);</div>
+<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160; }</div>
+<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160; out[0] = out[1] = out[2] = y[i];</div>
+<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160; out[3] = 255; <span class="comment">// not used if n==3</span></div>
+<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160; out += n;</div>
+<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160; }</div>
+<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; <span class="keywordflow">if</span> (is_rgb) {</div>
+<div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160; <span class="keywordflow">if</span> (n == 1)</div>
+<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i)</div>
+<div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160; *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);</div>
+<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160; <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i, out += 2) {</div>
+<div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160; out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);</div>
+<div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160; out[1] = 255;</div>
+<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160; }</div>
+<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160; }</div>
+<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (z-&gt;s-&gt;img_n == 4 &amp;&amp; z-&gt;app14_color_transform == 0) {</div>
+<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> m = coutput[3][i];</div>
+<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> r = stbi__blinn_8x8(coutput[0][i], m);</div>
+<div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> g = stbi__blinn_8x8(coutput[1][i], m);</div>
+<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> b = stbi__blinn_8x8(coutput[2][i], m);</div>
+<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160; out[0] = stbi__compute_y(r, g, b);</div>
+<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160; out[1] = 255;</div>
+<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>&#160; out += n;</div>
+<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160; }</div>
+<div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (z-&gt;s-&gt;img_n == 4 &amp;&amp; z-&gt;app14_color_transform == 2) {</div>
+<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160; out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]);</div>
+<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160; out[1] = 255;</div>
+<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160; out += n;</div>
+<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160; }</div>
+<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *y = coutput[0];</div>
+<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160; <span class="keywordflow">if</span> (n == 1)</div>
+<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) out[i] = y[i];</div>
+<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; z-&gt;s-&gt;img_x; ++i) *out++ = y[i], *out++ = 255;</div>
+<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160; }</div>
+<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160; }</div>
+<div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160; }</div>
+<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160; stbi__cleanup_jpeg(z);</div>
+<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160; *out_x = z-&gt;s-&gt;img_x;</div>
+<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160; *out_y = z-&gt;s-&gt;img_y;</div>
+<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160; <span class="keywordflow">if</span> (comp) *comp = z-&gt;s-&gt;img_n &gt;= 3 ? 3 : 1; <span class="comment">// report original components, not output</span></div>
+<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160; <span class="keywordflow">return</span> output;</div>
+<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160; }</div>
+<div class="line"><a name="l03681"></a><span class="lineno"> 3681</span>&#160;}</div>
+<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160;</div>
+<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__jpeg_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>&#160;{</div>
+<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* result;</div>
+<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160; stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(<span class="keyword">sizeof</span>(stbi__jpeg));</div>
+<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160; j-&gt;s = s;</div>
+<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160; stbi__setup_jpeg(j);</div>
+<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160; result = load_jpeg_image(j, x,y,comp,req_comp);</div>
+<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160; STBI_FREE(j);</div>
+<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160;}</div>
+<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160;</div>
+<div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_test(stbi__context *s)</div>
+<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;{</div>
+<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160; <span class="keywordtype">int</span> r;</div>
+<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160; stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(<span class="keyword">sizeof</span>(stbi__jpeg));</div>
+<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160; j-&gt;s = s;</div>
+<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160; stbi__setup_jpeg(j);</div>
+<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160; r = stbi__decode_jpeg_header(j, STBI__SCAN_type);</div>
+<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160; STBI_FREE(j);</div>
+<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160;}</div>
+<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160;</div>
+<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_info_raw(stbi__jpeg *j, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>&#160;{</div>
+<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160; <span class="keywordflow">if</span> (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {</div>
+<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160; stbi__rewind( j-&gt;s );</div>
+<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160; }</div>
+<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160; <span class="keywordflow">if</span> (x) *x = j-&gt;s-&gt;img_x;</div>
+<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160; <span class="keywordflow">if</span> (y) *y = j-&gt;s-&gt;img_y;</div>
+<div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>&#160; <span class="keywordflow">if</span> (comp) *comp = j-&gt;s-&gt;img_n &gt;= 3 ? 3 : 1;</div>
+<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160;}</div>
+<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;</div>
+<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__jpeg_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160;{</div>
+<div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160; <span class="keywordtype">int</span> result;</div>
+<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160; stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(<span class="keyword">sizeof</span>(stbi__jpeg)));</div>
+<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160; j-&gt;s = s;</div>
+<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160; result = stbi__jpeg_info_raw(j, x, y, comp);</div>
+<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; STBI_FREE(j);</div>
+<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160;}</div>
+<div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160;<span class="comment">// public domain zlib decode v0.2 Sean Barrett 2006-11-18</span></div>
+<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160;<span class="comment">// simple implementation</span></div>
+<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160;<span class="comment">// - all input must be provided in an upfront buffer</span></div>
+<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;<span class="comment">// - all output is written to a single output buffer (can malloc/realloc)</span></div>
+<div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160;<span class="comment">// performance</span></div>
+<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160;<span class="comment">// - fast huffman</span></div>
+<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160;</div>
+<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;<span class="preprocessor">#ifndef STBI_NO_ZLIB</span></div>
+<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160;<span class="comment">// fast-way is faster to check than jpeg huffman, but slow way is slower</span></div>
+<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160;<span class="preprocessor">#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables</span></div>
+<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define STBI__ZFAST_MASK ((1 &lt;&lt; STBI__ZFAST_BITS) - 1)</span></div>
+<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160;<span class="comment">// zlib-style huffman encoding</span></div>
+<div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;<span class="comment">// (jpegs packs from left, zlib from right, so can&#39;t share code)</span></div>
+<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160;{</div>
+<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160; stbi__uint16 fast[1 &lt;&lt; STBI__ZFAST_BITS];</div>
+<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160; stbi__uint16 firstcode[16];</div>
+<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160; <span class="keywordtype">int</span> maxcode[17];</div>
+<div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160; stbi__uint16 firstsymbol[16];</div>
+<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> size[288];</div>
+<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160; stbi__uint16 value[288];</div>
+<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160;} stbi__zhuffman;</div>
+<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160;</div>
+<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bitreverse16(<span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160;{</div>
+<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160; n = ((n &amp; 0xAAAA) &gt;&gt; 1) | ((n &amp; 0x5555) &lt;&lt; 1);</div>
+<div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160; n = ((n &amp; 0xCCCC) &gt;&gt; 2) | ((n &amp; 0x3333) &lt;&lt; 2);</div>
+<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160; n = ((n &amp; 0xF0F0) &gt;&gt; 4) | ((n &amp; 0x0F0F) &lt;&lt; 4);</div>
+<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; n = ((n &amp; 0xFF00) &gt;&gt; 8) | ((n &amp; 0x00FF) &lt;&lt; 8);</div>
+<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160; <span class="keywordflow">return</span> n;</div>
+<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160;}</div>
+<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160;</div>
+<div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bit_reverse(<span class="keywordtype">int</span> v, <span class="keywordtype">int</span> bits)</div>
+<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;{</div>
+<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160; STBI_ASSERT(bits &lt;= 16);</div>
+<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160; <span class="comment">// to bit reverse n bits, reverse 16 and shift</span></div>
+<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160; <span class="comment">// e.g. 11 bits, bit reverse and shift away 5</span></div>
+<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160; <span class="keywordflow">return</span> stbi__bitreverse16(v) &gt;&gt; (16-bits);</div>
+<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;}</div>
+<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;</div>
+<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zbuild_huffman(stbi__zhuffman *z, <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *sizelist, <span class="keywordtype">int</span> num)</div>
+<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160;{</div>
+<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160; <span class="keywordtype">int</span> i,k=0;</div>
+<div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160; <span class="keywordtype">int</span> code, next_code[16], sizes[17];</div>
+<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160;</div>
+<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160; <span class="comment">// DEFLATE spec for generating codes</span></div>
+<div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160; memset(sizes, 0, <span class="keyword">sizeof</span>(sizes));</div>
+<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160; memset(z-&gt;fast, 0, <span class="keyword">sizeof</span>(z-&gt;fast));</div>
+<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num; ++i)</div>
+<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160; ++sizes[sizelist[i]];</div>
+<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160; sizes[0] = 0;</div>
+<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160; <span class="keywordflow">for</span> (i=1; i &lt; 16; ++i)</div>
+<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160; <span class="keywordflow">if</span> (sizes[i] &gt; (1 &lt;&lt; i))</div>
+<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad sizes&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160; code = 0;</div>
+<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160; <span class="keywordflow">for</span> (i=1; i &lt; 16; ++i) {</div>
+<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160; next_code[i] = code;</div>
+<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160; z-&gt;firstcode[i] = (stbi__uint16) code;</div>
+<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160; z-&gt;firstsymbol[i] = (stbi__uint16) k;</div>
+<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160; code = (code + sizes[i]);</div>
+<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160; <span class="keywordflow">if</span> (sizes[i])</div>
+<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160; <span class="keywordflow">if</span> (code-1 &gt;= (1 &lt;&lt; i)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad codelengths&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160; z-&gt;maxcode[i] = code &lt;&lt; (16-i); <span class="comment">// preshift for inner loop</span></div>
+<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160; code &lt;&lt;= 1;</div>
+<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160; k += sizes[i];</div>
+<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160; }</div>
+<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160; z-&gt;maxcode[16] = 0x10000; <span class="comment">// sentinel</span></div>
+<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num; ++i) {</div>
+<div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160; <span class="keywordtype">int</span> s = sizelist[i];</div>
+<div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160; <span class="keywordflow">if</span> (s) {</div>
+<div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160; <span class="keywordtype">int</span> c = next_code[s] - z-&gt;firstcode[s] + z-&gt;firstsymbol[s];</div>
+<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160; stbi__uint16 fastv = (stbi__uint16) ((s &lt;&lt; 9) | i);</div>
+<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160; z-&gt;size [c] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> ) s;</div>
+<div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160; z-&gt;value[c] = (stbi__uint16) i;</div>
+<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160; <span class="keywordflow">if</span> (s &lt;= STBI__ZFAST_BITS) {</div>
+<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160; <span class="keywordtype">int</span> j = stbi__bit_reverse(next_code[s],s);</div>
+<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; <span class="keywordflow">while</span> (j &lt; (1 &lt;&lt; STBI__ZFAST_BITS)) {</div>
+<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; z-&gt;fast[j] = fastv;</div>
+<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160; j += (1 &lt;&lt; s);</div>
+<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160; }</div>
+<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; }</div>
+<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; ++next_code[s];</div>
+<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; }</div>
+<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160; }</div>
+<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160;}</div>
+<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160;</div>
+<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160;<span class="comment">// zlib-from-memory implementation for PNG reading</span></div>
+<div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160;<span class="comment">// because PNG allows splitting the zlib stream arbitrarily,</span></div>
+<div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160;<span class="comment">// and it&#39;s annoying structurally to have PNG call ZLIB call PNG,</span></div>
+<div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160;<span class="comment">// we require PNG read all the IDATs and combine them into a single</span></div>
+<div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160;<span class="comment">// memory buffer</span></div>
+<div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160;</div>
+<div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160;{</div>
+<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *zbuffer, *zbuffer_end;</div>
+<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160; <span class="keywordtype">int</span> num_bits;</div>
+<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; stbi__uint32 code_buffer;</div>
+<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160;</div>
+<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160; <span class="keywordtype">char</span> *zout;</div>
+<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160; <span class="keywordtype">char</span> *zout_start;</div>
+<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; <span class="keywordtype">char</span> *zout_end;</div>
+<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160; <span class="keywordtype">int</span> z_expandable;</div>
+<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160;</div>
+<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160; stbi__zhuffman z_length, z_distance;</div>
+<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160;} stbi__zbuf;</div>
+<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160;</div>
+<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;stbi_inline <span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__zget8(stbi__zbuf *z)</div>
+<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160;{</div>
+<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160; <span class="keywordflow">if</span> (z-&gt;zbuffer &gt;= z-&gt;zbuffer_end) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160; <span class="keywordflow">return</span> *z-&gt;zbuffer++;</div>
+<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160;}</div>
+<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160;</div>
+<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__fill_bits(stbi__zbuf *z)</div>
+<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;{</div>
+<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; STBI_ASSERT(z-&gt;code_buffer &lt; (1U &lt;&lt; z-&gt;num_bits));</div>
+<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160; z-&gt;code_buffer |= (<span class="keywordtype">unsigned</span> int) stbi__zget8(z) &lt;&lt; z-&gt;num_bits;</div>
+<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160; z-&gt;num_bits += 8;</div>
+<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160; } <span class="keywordflow">while</span> (z-&gt;num_bits &lt;= 24);</div>
+<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;}</div>
+<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;</div>
+<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stbi__zreceive(stbi__zbuf *z, <span class="keywordtype">int</span> n)</div>
+<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160;{</div>
+<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160; <span class="keywordflow">if</span> (z-&gt;num_bits &lt; n) stbi__fill_bits(z);</div>
+<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160; k = z-&gt;code_buffer &amp; ((1 &lt;&lt; n) - 1);</div>
+<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160; z-&gt;code_buffer &gt;&gt;= n;</div>
+<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; z-&gt;num_bits -= n;</div>
+<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160; <span class="keywordflow">return</span> k;</div>
+<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160;}</div>
+<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160;</div>
+<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)</div>
+<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;{</div>
+<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; <span class="keywordtype">int</span> b,s,k;</div>
+<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160; <span class="comment">// not resolved by fast table, so compute it the slow way</span></div>
+<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; <span class="comment">// use jpeg approach, which requires MSbits at top</span></div>
+<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160; k = stbi__bit_reverse(a-&gt;code_buffer, 16);</div>
+<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; <span class="keywordflow">for</span> (s=STBI__ZFAST_BITS+1; ; ++s)</div>
+<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160; <span class="keywordflow">if</span> (k &lt; z-&gt;maxcode[s])</div>
+<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160; <span class="keywordflow">if</span> (s == 16) <span class="keywordflow">return</span> -1; <span class="comment">// invalid code!</span></div>
+<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160; <span class="comment">// code size is s, so:</span></div>
+<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160; b = (k &gt;&gt; (16-s)) - z-&gt;firstcode[s] + z-&gt;firstsymbol[s];</div>
+<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160; STBI_ASSERT(z-&gt;size[b] == s);</div>
+<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160; a-&gt;code_buffer &gt;&gt;= s;</div>
+<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160; a-&gt;num_bits -= s;</div>
+<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; <span class="keywordflow">return</span> z-&gt;value[b];</div>
+<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160;}</div>
+<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160;</div>
+<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;stbi_inline <span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z)</div>
+<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160;{</div>
+<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160; <span class="keywordtype">int</span> b,s;</div>
+<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160; <span class="keywordflow">if</span> (a-&gt;num_bits &lt; 16) stbi__fill_bits(a);</div>
+<div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160; b = z-&gt;fast[a-&gt;code_buffer &amp; STBI__ZFAST_MASK];</div>
+<div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160; <span class="keywordflow">if</span> (b) {</div>
+<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160; s = b &gt;&gt; 9;</div>
+<div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160; a-&gt;code_buffer &gt;&gt;= s;</div>
+<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160; a-&gt;num_bits -= s;</div>
+<div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160; <span class="keywordflow">return</span> b &amp; 511;</div>
+<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; }</div>
+<div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; <span class="keywordflow">return</span> stbi__zhuffman_decode_slowpath(a, z);</div>
+<div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160;}</div>
+<div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160;</div>
+<div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zexpand(stbi__zbuf *z, <span class="keywordtype">char</span> *zout, <span class="keywordtype">int</span> n) <span class="comment">// need to make room for n bytes</span></div>
+<div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160;{</div>
+<div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; <span class="keywordtype">char</span> *q;</div>
+<div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; <span class="keywordtype">int</span> cur, limit, old_limit;</div>
+<div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160; z-&gt;zout = zout;</div>
+<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160; <span class="keywordflow">if</span> (!z-&gt;z_expandable) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;output buffer limit&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160; cur = (int) (z-&gt;zout - z-&gt;zout_start);</div>
+<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160; limit = old_limit = (int) (z-&gt;zout_end - z-&gt;zout_start);</div>
+<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160; <span class="keywordflow">while</span> (cur + n &gt; limit)</div>
+<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160; limit *= 2;</div>
+<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160; q = (<span class="keywordtype">char</span> *) STBI_REALLOC_SIZED(z-&gt;zout_start, old_limit, limit);</div>
+<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; STBI_NOTUSED(old_limit);</div>
+<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; <span class="keywordflow">if</span> (q == NULL) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160; z-&gt;zout_start = q;</div>
+<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; z-&gt;zout = q + cur;</div>
+<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; z-&gt;zout_end = q + limit;</div>
+<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160;}</div>
+<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160;</div>
+<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zlength_base[31] = {</div>
+<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160; 3,4,5,6,7,8,9,10,11,13,</div>
+<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160; 15,17,19,23,27,31,35,43,51,59,</div>
+<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160; 67,83,99,115,131,163,195,227,258,0,0 };</div>
+<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160;</div>
+<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zlength_extra[31]=</div>
+<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160;{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };</div>
+<div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160;</div>
+<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,</div>
+<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160;257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};</div>
+<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160;</div>
+<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__zdist_extra[32] =</div>
+<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160;{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};</div>
+<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160;</div>
+<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_huffman_block(stbi__zbuf *a)</div>
+<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;{</div>
+<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160; <span class="keywordtype">char</span> *zout = a-&gt;zout;</div>
+<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160; <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160; <span class="keywordtype">int</span> z = stbi__zhuffman_decode(a, &amp;a-&gt;z_length);</div>
+<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160; <span class="keywordflow">if</span> (z &lt; 256) {</div>
+<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; <span class="keywordflow">if</span> (z &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>); <span class="comment">// error in huffman codes</span></div>
+<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160; <span class="keywordflow">if</span> (zout &gt;= a-&gt;zout_end) {</div>
+<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; <span class="keywordflow">if</span> (!stbi__zexpand(a, zout, 1)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; zout = a-&gt;zout;</div>
+<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160; }</div>
+<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; *zout++ = (char) z;</div>
+<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p;</div>
+<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; <span class="keywordtype">int</span> len,dist;</div>
+<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160; <span class="keywordflow">if</span> (z == 256) {</div>
+<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; a-&gt;zout = zout;</div>
+<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; }</div>
+<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160; z -= 257;</div>
+<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160; len = stbi__zlength_base[z];</div>
+<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160; <span class="keywordflow">if</span> (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]);</div>
+<div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160; z = stbi__zhuffman_decode(a, &amp;a-&gt;z_distance);</div>
+<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160; <span class="keywordflow">if</span> (z &lt; 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad huffman code&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160; dist = stbi__zdist_base[z];</div>
+<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160; <span class="keywordflow">if</span> (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]);</div>
+<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; <span class="keywordflow">if</span> (zout - a-&gt;zout_start &lt; dist) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad dist&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160; <span class="keywordflow">if</span> (zout + len &gt; a-&gt;zout_end) {</div>
+<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160; <span class="keywordflow">if</span> (!stbi__zexpand(a, zout, len)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; zout = a-&gt;zout;</div>
+<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160; }</div>
+<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160; p = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) (zout - dist);</div>
+<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160; <span class="keywordflow">if</span> (dist == 1) { <span class="comment">// run of one byte; common in images.</span></div>
+<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> v = *p;</div>
+<div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160; <span class="keywordflow">if</span> (len) { <span class="keywordflow">do</span> *zout++ = v; <span class="keywordflow">while</span> (--len); }</div>
+<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; <span class="keywordflow">if</span> (len) { <span class="keywordflow">do</span> *zout++ = *p++; <span class="keywordflow">while</span> (--len); }</div>
+<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160; }</div>
+<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; }</div>
+<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; }</div>
+<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;}</div>
+<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160;</div>
+<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__compute_huffman_codes(stbi__zbuf *a)</div>
+<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160;{</div>
+<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160; <span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };</div>
+<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; stbi__zhuffman z_codelength;</div>
+<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> lencodes[286+32+137];<span class="comment">//padding for maximum single op</span></div>
+<div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> codelength_sizes[19];</div>
+<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160; <span class="keywordtype">int</span> i,n;</div>
+<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160;</div>
+<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160; <span class="keywordtype">int</span> hlit = stbi__zreceive(a,5) + 257;</div>
+<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; <span class="keywordtype">int</span> hdist = stbi__zreceive(a,5) + 1;</div>
+<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160; <span class="keywordtype">int</span> hclen = stbi__zreceive(a,4) + 4;</div>
+<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; <span class="keywordtype">int</span> ntot = hlit + hdist;</div>
+<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;</div>
+<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; memset(codelength_sizes, 0, <span class="keyword">sizeof</span>(codelength_sizes));</div>
+<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; hclen; ++i) {</div>
+<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; <span class="keywordtype">int</span> s = stbi__zreceive(a,3);</div>
+<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; codelength_sizes[length_dezigzag[i]] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) s;</div>
+<div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160; }</div>
+<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160; <span class="keywordflow">if</span> (!stbi__zbuild_huffman(&amp;z_codelength, codelength_sizes, 19)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;</div>
+<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160; n = 0;</div>
+<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160; <span class="keywordflow">while</span> (n &lt; ntot) {</div>
+<div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160; <span class="keywordtype">int</span> c = stbi__zhuffman_decode(a, &amp;z_codelength);</div>
+<div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160; <span class="keywordflow">if</span> (c &lt; 0 || c &gt;= 19) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad codelengths&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160; <span class="keywordflow">if</span> (c &lt; 16)</div>
+<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160; lencodes[n++] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) c;</div>
+<div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160; <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> fill = 0;</div>
+<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160; <span class="keywordflow">if</span> (c == 16) {</div>
+<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; c = stbi__zreceive(a,2)+3;</div>
+<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160; <span class="keywordflow">if</span> (n == 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad codelengths&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; fill = lencodes[n-1];</div>
+<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == 17)</div>
+<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; c = stbi__zreceive(a,3)+3;</div>
+<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; STBI_ASSERT(c == 18);</div>
+<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; c = stbi__zreceive(a,7)+11;</div>
+<div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; }</div>
+<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; <span class="keywordflow">if</span> (ntot - n &lt; c) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad codelengths&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; memset(lencodes+n, fill, c);</div>
+<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; n += c;</div>
+<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160; }</div>
+<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; }</div>
+<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; <span class="keywordflow">if</span> (n != ntot) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad codelengths&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160; <span class="keywordflow">if</span> (!stbi__zbuild_huffman(&amp;a-&gt;z_length, lencodes, hlit)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160; <span class="keywordflow">if</span> (!stbi__zbuild_huffman(&amp;a-&gt;z_distance, lencodes+hlit, hdist)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;}</div>
+<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160;</div>
+<div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_uncompressed_block(stbi__zbuf *a)</div>
+<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160;{</div>
+<div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> header[4];</div>
+<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="keywordtype">int</span> len,nlen,k;</div>
+<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; <span class="keywordflow">if</span> (a-&gt;num_bits &amp; 7)</div>
+<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160; stbi__zreceive(a, a-&gt;num_bits &amp; 7); <span class="comment">// discard</span></div>
+<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; <span class="comment">// drain the bit-packed data into header</span></div>
+<div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160; k = 0;</div>
+<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; <span class="keywordflow">while</span> (a-&gt;num_bits &gt; 0) {</div>
+<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; header[k++] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) (a-&gt;code_buffer &amp; 255); <span class="comment">// suppress MSVC run-time check</span></div>
+<div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; a-&gt;code_buffer &gt;&gt;= 8;</div>
+<div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; a-&gt;num_bits -= 8;</div>
+<div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; }</div>
+<div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; STBI_ASSERT(a-&gt;num_bits == 0);</div>
+<div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; <span class="comment">// now fill header the normal way</span></div>
+<div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; <span class="keywordflow">while</span> (k &lt; 4)</div>
+<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160; header[k++] = stbi__zget8(a);</div>
+<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160; len = header[1] * 256 + header[0];</div>
+<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; nlen = header[3] * 256 + header[2];</div>
+<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; <span class="keywordflow">if</span> (nlen != (len ^ 0xffff)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;zlib corrupt&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; <span class="keywordflow">if</span> (a-&gt;zbuffer + len &gt; a-&gt;zbuffer_end) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;read past buffer&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160; <span class="keywordflow">if</span> (a-&gt;zout + len &gt; a-&gt;zout_end)</div>
+<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; <span class="keywordflow">if</span> (!stbi__zexpand(a, a-&gt;zout, len)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; memcpy(a-&gt;zout, a-&gt;zbuffer, len);</div>
+<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160; a-&gt;zbuffer += len;</div>
+<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; a-&gt;zout += len;</div>
+<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160;}</div>
+<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160;</div>
+<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_zlib_header(stbi__zbuf *a)</div>
+<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160;{</div>
+<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160; <span class="keywordtype">int</span> cmf = stbi__zget8(a);</div>
+<div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160; <span class="keywordtype">int</span> cm = cmf &amp; 15;</div>
+<div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160; <span class="comment">/* int cinfo = cmf &gt;&gt; 4; */</span></div>
+<div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160; <span class="keywordtype">int</span> flg = stbi__zget8(a);</div>
+<div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160; <span class="keywordflow">if</span> ((cmf*256+flg) % 31 != 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad zlib header&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>); <span class="comment">// zlib spec</span></div>
+<div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160; <span class="keywordflow">if</span> (flg &amp; 32) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no preset dict&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>); <span class="comment">// preset dictionary not allowed in png</span></div>
+<div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160; <span class="keywordflow">if</span> (cm != 8) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad compression&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>); <span class="comment">// DEFLATE required for png</span></div>
+<div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160; <span class="comment">// window = 1 &lt;&lt; (8 + cinfo)... but who cares, we fully buffer output</span></div>
+<div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160;}</div>
+<div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160;</div>
+<div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__zdefault_length[288] =</div>
+<div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160;{</div>
+<div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160; 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,</div>
+<div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160; 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,</div>
+<div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,</div>
+<div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160; 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,</div>
+<div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160; 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,</div>
+<div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160; 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,</div>
+<div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160; 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,</div>
+<div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160; 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,</div>
+<div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160; 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8</div>
+<div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160;};</div>
+<div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__zdefault_distance[32] =</div>
+<div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160;{</div>
+<div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160; 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5</div>
+<div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160;};</div>
+<div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160;<span class="comment">Init algorithm:</span></div>
+<div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160;<span class="comment">{</span></div>
+<div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160;<span class="comment"> int i; // use &lt;= to match clearly with spec</span></div>
+<div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160;<span class="comment"> for (i=0; i &lt;= 143; ++i) stbi__zdefault_length[i] = 8;</span></div>
+<div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;<span class="comment"> for ( ; i &lt;= 255; ++i) stbi__zdefault_length[i] = 9;</span></div>
+<div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160;<span class="comment"> for ( ; i &lt;= 279; ++i) stbi__zdefault_length[i] = 7;</span></div>
+<div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;<span class="comment"> for ( ; i &lt;= 287; ++i) stbi__zdefault_length[i] = 8;</span></div>
+<div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160;<span class="comment"> for (i=0; i &lt;= 31; ++i) stbi__zdefault_distance[i] = 5;</span></div>
+<div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;<span class="comment">}</span></div>
+<div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160;</div>
+<div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_zlib(stbi__zbuf *a, <span class="keywordtype">int</span> parse_header)</div>
+<div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160;{</div>
+<div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160; <span class="keywordtype">int</span> <span class="keyword">final</span>, type;</div>
+<div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160; <span class="keywordflow">if</span> (parse_header)</div>
+<div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160; <span class="keywordflow">if</span> (!stbi__parse_zlib_header(a)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160; a-&gt;num_bits = 0;</div>
+<div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160; a-&gt;code_buffer = 0;</div>
+<div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160; <span class="keyword">final</span> = stbi__zreceive(a,1);</div>
+<div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160; type = stbi__zreceive(a,2);</div>
+<div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>&#160; <span class="keywordflow">if</span> (type == 0) {</div>
+<div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160; <span class="keywordflow">if</span> (!stbi__parse_uncompressed_block(a)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 3) {</div>
+<div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160; <span class="keywordflow">if</span> (type == 1) {</div>
+<div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160; <span class="comment">// use fixed code lengths</span></div>
+<div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160; <span class="keywordflow">if</span> (!stbi__zbuild_huffman(&amp;a-&gt;z_length , stbi__zdefault_length , 288)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160; <span class="keywordflow">if</span> (!stbi__zbuild_huffman(&amp;a-&gt;z_distance, stbi__zdefault_distance, 32)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160; <span class="keywordflow">if</span> (!stbi__compute_huffman_codes(a)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160; }</div>
+<div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160; <span class="keywordflow">if</span> (!stbi__parse_huffman_block(a)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160; }</div>
+<div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160; } <span class="keywordflow">while</span> (!<span class="keyword">final</span>);</div>
+<div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160;}</div>
+<div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160;</div>
+<div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__do_zlib(stbi__zbuf *a, <span class="keywordtype">char</span> *obuf, <span class="keywordtype">int</span> olen, <span class="keywordtype">int</span> exp, <span class="keywordtype">int</span> parse_header)</div>
+<div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>&#160;{</div>
+<div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160; a-&gt;zout_start = obuf;</div>
+<div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160; a-&gt;zout = obuf;</div>
+<div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160; a-&gt;zout_end = obuf + olen;</div>
+<div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>&#160; a-&gt;z_expandable = exp;</div>
+<div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>&#160;</div>
+<div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>&#160; <span class="keywordflow">return</span> stbi__parse_zlib(a, parse_header);</div>
+<div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160;}</div>
+<div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160;</div>
+<div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stbi_zlib_decode_malloc_guesssize</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> initial_size, <span class="keywordtype">int</span> *outlen)</div>
+<div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160;{</div>
+<div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160; stbi__zbuf a;</div>
+<div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160; <span class="keywordtype">char</span> *p = (<span class="keywordtype">char</span> *) stbi__malloc(initial_size);</div>
+<div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160; <span class="keywordflow">if</span> (p == NULL) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160; a.zbuffer = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer;</div>
+<div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160; a.zbuffer_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer + len;</div>
+<div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160; <span class="keywordflow">if</span> (stbi__do_zlib(&amp;a, p, initial_size, 1, 1)) {</div>
+<div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160; <span class="keywordflow">if</span> (outlen) *outlen = (int) (a.zout - a.zout_start);</div>
+<div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>&#160; <span class="keywordflow">return</span> a.zout_start;</div>
+<div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160; STBI_FREE(a.zout_start);</div>
+<div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160; <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160; }</div>
+<div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160;}</div>
+<div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160;</div>
+<div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stbi_zlib_decode_malloc</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *outlen)</div>
+<div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160;{</div>
+<div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160; <span class="keywordflow">return</span> <a class="code" href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stbi_zlib_decode_malloc_guesssize</a>(buffer, len, 16384, outlen);</div>
+<div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;}</div>
+<div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160;</div>
+<div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stbi_zlib_decode_malloc_guesssize_headerflag</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> initial_size, <span class="keywordtype">int</span> *outlen, <span class="keywordtype">int</span> parse_header)</div>
+<div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160;{</div>
+<div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160; stbi__zbuf a;</div>
+<div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; <span class="keywordtype">char</span> *p = (<span class="keywordtype">char</span> *) stbi__malloc(initial_size);</div>
+<div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160; <span class="keywordflow">if</span> (p == NULL) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160; a.zbuffer = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer;</div>
+<div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160; a.zbuffer_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer + len;</div>
+<div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160; <span class="keywordflow">if</span> (stbi__do_zlib(&amp;a, p, initial_size, 1, parse_header)) {</div>
+<div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>&#160; <span class="keywordflow">if</span> (outlen) *outlen = (int) (a.zout - a.zout_start);</div>
+<div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160; <span class="keywordflow">return</span> a.zout_start;</div>
+<div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160; STBI_FREE(a.zout_start);</div>
+<div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160; <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160; }</div>
+<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160;}</div>
+<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160;</div>
+<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stbi_zlib_decode_buffer</a>(<span class="keywordtype">char</span> *obuffer, <span class="keywordtype">int</span> olen, <span class="keywordtype">char</span> <span class="keyword">const</span> *ibuffer, <span class="keywordtype">int</span> ilen)</div>
+<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160;{</div>
+<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160; stbi__zbuf a;</div>
+<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160; a.zbuffer = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) ibuffer;</div>
+<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; a.zbuffer_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) ibuffer + ilen;</div>
+<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; <span class="keywordflow">if</span> (stbi__do_zlib(&amp;a, obuffer, olen, 0, 1))</div>
+<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">int</span>) (a.zout - a.zout_start);</div>
+<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160;}</div>
+<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160;</div>
+<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">char</span> *<a class="code" href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stbi_zlib_decode_noheader_malloc</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *outlen)</div>
+<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160;{</div>
+<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; stbi__zbuf a;</div>
+<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160; <span class="keywordtype">char</span> *p = (<span class="keywordtype">char</span> *) stbi__malloc(16384);</div>
+<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160; <span class="keywordflow">if</span> (p == NULL) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160; a.zbuffer = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer;</div>
+<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160; a.zbuffer_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) buffer+len;</div>
+<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; <span class="keywordflow">if</span> (stbi__do_zlib(&amp;a, p, 16384, 1, 0)) {</div>
+<div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160; <span class="keywordflow">if</span> (outlen) *outlen = (int) (a.zout - a.zout_start);</div>
+<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; <span class="keywordflow">return</span> a.zout_start;</div>
+<div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160; STBI_FREE(a.zout_start);</div>
+<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; }</div>
+<div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160;}</div>
+<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160;</div>
+<div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stbi_zlib_decode_noheader_buffer</a>(<span class="keywordtype">char</span> *obuffer, <span class="keywordtype">int</span> olen, <span class="keyword">const</span> <span class="keywordtype">char</span> *ibuffer, <span class="keywordtype">int</span> ilen)</div>
+<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160;{</div>
+<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160; stbi__zbuf a;</div>
+<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; a.zbuffer = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) ibuffer;</div>
+<div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; a.zbuffer_end = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) ibuffer + ilen;</div>
+<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160; <span class="keywordflow">if</span> (stbi__do_zlib(&amp;a, obuffer, olen, 0, 0))</div>
+<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">int</span>) (a.zout - a.zout_start);</div>
+<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160;}</div>
+<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160;<span class="comment">// public domain &quot;baseline&quot; PNG decoder v0.10 Sean Barrett 2006-11-18</span></div>
+<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160;<span class="comment">// simple implementation</span></div>
+<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160;<span class="comment">// - only 8-bit samples</span></div>
+<div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160;<span class="comment">// - no CRC checking</span></div>
+<div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160;<span class="comment">// - allocates lots of intermediate memory</span></div>
+<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160;<span class="comment">// - avoids problem of streaming data between subsystems</span></div>
+<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160;<span class="comment">// - avoids explicit window management</span></div>
+<div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160;<span class="comment">// performance</span></div>
+<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;<span class="comment">// - uses stb_zlib, a PD zlib implementation with fast huffman decoding</span></div>
+<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160;</div>
+<div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PNG</span></div>
+<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160;{</div>
+<div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160; stbi__uint32 length;</div>
+<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160; stbi__uint32 type;</div>
+<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160;} stbi__pngchunk;</div>
+<div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160;</div>
+<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160;<span class="keyword">static</span> stbi__pngchunk stbi__get_chunk_header(stbi__context *s)</div>
+<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160;{</div>
+<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; stbi__pngchunk c;</div>
+<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160; c.length = stbi__get32be(s);</div>
+<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; c.type = stbi__get32be(s);</div>
+<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160; <span class="keywordflow">return</span> c;</div>
+<div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160;}</div>
+<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160;</div>
+<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__check_png_header(stbi__context *s)</div>
+<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160;{</div>
+<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160; <span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> png_sig[8] = { 137,80,78,71,13,10,26,10 };</div>
+<div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 8; ++i)</div>
+<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != png_sig[i]) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad png sig&quot;</span>,<span class="stringliteral">&quot;Not a PNG&quot;</span>);</div>
+<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160;}</div>
+<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160;</div>
+<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160;{</div>
+<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; stbi__context *s;</div>
+<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *idata, *expanded, *out;</div>
+<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; <span class="keywordtype">int</span> depth;</div>
+<div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160;} stbi__png;</div>
+<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160;</div>
+<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160;</div>
+<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160;<span class="keyword">enum</span> {</div>
+<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; STBI__F_none=0,</div>
+<div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160; STBI__F_sub=1,</div>
+<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; STBI__F_up=2,</div>
+<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; STBI__F_avg=3,</div>
+<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; STBI__F_paeth=4,</div>
+<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <span class="comment">// synthetic filters used for first scanline to avoid needing a dummy row of 0s</span></div>
+<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; STBI__F_avg_first,</div>
+<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160; STBI__F_paeth_first</div>
+<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160;};</div>
+<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160;</div>
+<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> first_row_filter[5] =</div>
+<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160;{</div>
+<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; STBI__F_none,</div>
+<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; STBI__F_sub,</div>
+<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; STBI__F_none,</div>
+<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160; STBI__F_avg_first,</div>
+<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; STBI__F_paeth_first</div>
+<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160;};</div>
+<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160;</div>
+<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__paeth(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b, <span class="keywordtype">int</span> c)</div>
+<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160;{</div>
+<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160; <span class="keywordtype">int</span> p = a + b - c;</div>
+<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; <span class="keywordtype">int</span> pa = abs(p-a);</div>
+<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; <span class="keywordtype">int</span> pb = abs(p-b);</div>
+<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; <span class="keywordtype">int</span> pc = abs(p-c);</div>
+<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160; <span class="keywordflow">if</span> (pa &lt;= pb &amp;&amp; pa &lt;= pc) <span class="keywordflow">return</span> a;</div>
+<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; <span class="keywordflow">if</span> (pb &lt;= pc) <span class="keywordflow">return</span> b;</div>
+<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; <span class="keywordflow">return</span> c;</div>
+<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;}</div>
+<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160;</div>
+<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 };</div>
+<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160;</div>
+<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160;<span class="comment">// create the png data from post-deflated data</span></div>
+<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__create_png_image_raw(stbi__png *a, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *raw, stbi__uint32 raw_len, <span class="keywordtype">int</span> out_n, stbi__uint32 x, stbi__uint32 y, <span class="keywordtype">int</span> depth, <span class="keywordtype">int</span> color)</div>
+<div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160;{</div>
+<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160; <span class="keywordtype">int</span> bytes = (depth == 16? 2 : 1);</div>
+<div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160; stbi__context *s = a-&gt;s;</div>
+<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; stbi__uint32 i,j,stride = x*out_n*bytes;</div>
+<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; stbi__uint32 img_len, img_width_bytes;</div>
+<div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160; <span class="keywordtype">int</span> k;</div>
+<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; <span class="keywordtype">int</span> img_n = s-&gt;img_n; <span class="comment">// copy it into a local for later</span></div>
+<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160;</div>
+<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; <span class="keywordtype">int</span> output_bytes = out_n*bytes;</div>
+<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; <span class="keywordtype">int</span> filter_bytes = img_n*bytes;</div>
+<div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160; <span class="keywordtype">int</span> width = x;</div>
+<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160;</div>
+<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; STBI_ASSERT(out_n == s-&gt;img_n || out_n == s-&gt;img_n+1);</div>
+<div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; a-&gt;out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(x, y, output_bytes, 0); <span class="comment">// extra bytes to write off the end into</span></div>
+<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160; <span class="keywordflow">if</span> (!a-&gt;out) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160;</div>
+<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160; img_width_bytes = (((img_n * x * depth) + 7) &gt;&gt; 3);</div>
+<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160; img_len = (img_width_bytes + 1) * y;</div>
+<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; <span class="comment">// we used to check for exact match between raw_len and img_len on non-interlaced PNGs,</span></div>
+<div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160; <span class="comment">// but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),</span></div>
+<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; <span class="comment">// so just check for raw_len &lt; img_len always.</span></div>
+<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160; <span class="keywordflow">if</span> (raw_len &lt; img_len) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;not enough pixels&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160;</div>
+<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; y; ++j) {</div>
+<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *cur = a-&gt;out + stride*j;</div>
+<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *prior;</div>
+<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160; <span class="keywordtype">int</span> filter = *raw++;</div>
+<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160;</div>
+<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160; <span class="keywordflow">if</span> (filter &gt; 4)</div>
+<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;invalid filter&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160;</div>
+<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160; <span class="keywordflow">if</span> (depth &lt; 8) {</div>
+<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160; STBI_ASSERT(img_width_bytes &lt;= x);</div>
+<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; cur += x*out_n - img_width_bytes; <span class="comment">// store output to the rightmost img_len bytes, so we can decode in place</span></div>
+<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160; filter_bytes = 1;</div>
+<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; width = img_width_bytes;</div>
+<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; }</div>
+<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160; prior = cur - stride; <span class="comment">// bugfix: need to compute this after &#39;cur +=&#39; computation above</span></div>
+<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160;</div>
+<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; <span class="comment">// if first row, use special filter that doesn&#39;t sample previous row</span></div>
+<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; <span class="keywordflow">if</span> (j == 0) filter = first_row_filter[filter];</div>
+<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160;</div>
+<div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; <span class="comment">// handle first byte explicitly</span></div>
+<div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160; <span class="keywordflow">for</span> (k=0; k &lt; filter_bytes; ++k) {</div>
+<div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160; <span class="keywordflow">switch</span> (filter) {</div>
+<div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; <span class="keywordflow">case</span> STBI__F_none : cur[k] = raw[k]; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; <span class="keywordflow">case</span> STBI__F_sub : cur[k] = raw[k]; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160; <span class="keywordflow">case</span> STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; <span class="keywordflow">case</span> STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]&gt;&gt;1)); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; <span class="keywordflow">case</span> STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; <span class="keywordflow">case</span> STBI__F_avg_first : cur[k] = raw[k]; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160; <span class="keywordflow">case</span> STBI__F_paeth_first: cur[k] = raw[k]; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160; }</div>
+<div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160; }</div>
+<div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160;</div>
+<div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160; <span class="keywordflow">if</span> (depth == 8) {</div>
+<div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; <span class="keywordflow">if</span> (img_n != out_n)</div>
+<div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160; cur[img_n] = 255; <span class="comment">// first pixel</span></div>
+<div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160; raw += img_n;</div>
+<div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; cur += out_n;</div>
+<div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160; prior += out_n;</div>
+<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (depth == 16) {</div>
+<div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160; <span class="keywordflow">if</span> (img_n != out_n) {</div>
+<div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160; cur[filter_bytes] = 255; <span class="comment">// first pixel top byte</span></div>
+<div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160; cur[filter_bytes+1] = 255; <span class="comment">// first pixel bottom byte</span></div>
+<div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160; }</div>
+<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; raw += filter_bytes;</div>
+<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160; cur += output_bytes;</div>
+<div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160; prior += output_bytes;</div>
+<div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160; raw += 1;</div>
+<div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; cur += 1;</div>
+<div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160; prior += 1;</div>
+<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; }</div>
+<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160;</div>
+<div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160; <span class="comment">// this is a little gross, so that we don&#39;t switch per-pixel or per-component</span></div>
+<div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; <span class="keywordflow">if</span> (depth &lt; 8 || img_n == out_n) {</div>
+<div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160; <span class="keywordtype">int</span> nk = (width - 1)*filter_bytes;</div>
+<div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160;<span class="preprocessor"> #define STBI__CASE(f) \</span></div>
+<div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160;<span class="preprocessor"> case f: \</span></div>
+<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160;<span class="preprocessor"> for (k=0; k &lt; nk; ++k)</span></div>
+<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">switch</span> (filter) {</div>
+<div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160; <span class="comment">// &quot;none&quot; filter turns into a memcpy here; make that explicit.</span></div>
+<div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160; <span class="keywordflow">case</span> STBI__F_none: memcpy(cur, raw, nk); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160; STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160; STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160; STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])&gt;&gt;1)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] &gt;&gt; 1)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160; STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160; }</div>
+<div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;<span class="preprocessor"> #undef STBI__CASE</span></div>
+<div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160;<span class="preprocessor"></span> raw += nk;</div>
+<div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; STBI_ASSERT(img_n+1 == out_n);</div>
+<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160;<span class="preprocessor"> #define STBI__CASE(f) \</span></div>
+<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160;<span class="preprocessor"> case f: \</span></div>
+<div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;<span class="preprocessor"> for (i=x-1; i &gt;= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \</span></div>
+<div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160;<span class="preprocessor"> for (k=0; k &lt; filter_bytes; ++k)</span></div>
+<div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">switch</span> (filter) {</div>
+<div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160; STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160; STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])&gt;&gt;1)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160; STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] &gt;&gt; 1)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160; STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160; }</div>
+<div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;<span class="preprocessor"> #undef STBI__CASE</span></div>
+<div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160; <span class="comment">// the loop above sets the high byte of the pixels&#39; alpha, but for</span></div>
+<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160; <span class="comment">// 16 bit png files we also need the low byte set. we&#39;ll do that here.</span></div>
+<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; <span class="keywordflow">if</span> (depth == 16) {</div>
+<div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160; cur = a-&gt;out + stride*j; <span class="comment">// start at the beginning of the row again</span></div>
+<div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; x; ++i,cur+=output_bytes) {</div>
+<div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160; cur[filter_bytes+1] = 255;</div>
+<div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160; }</div>
+<div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160; }</div>
+<div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160; }</div>
+<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; }</div>
+<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160;</div>
+<div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160; <span class="comment">// we make a separate pass to expand bits to pixels; for performance,</span></div>
+<div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160; <span class="comment">// this could run two scanlines behind the above code, so it won&#39;t</span></div>
+<div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160; <span class="comment">// intefere with filtering but will still be in the cache.</span></div>
+<div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160; <span class="keywordflow">if</span> (depth &lt; 8) {</div>
+<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; y; ++j) {</div>
+<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *cur = a-&gt;out + stride*j;</div>
+<div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *in = a-&gt;out + stride*j + x*out_n - img_width_bytes;</div>
+<div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160; <span class="comment">// unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit</span></div>
+<div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; <span class="comment">// png guarante byte alignment, if width is not multiple of 8/4/2 we&#39;ll decode dummy trailing data that will be skipped in the later loop</span></div>
+<div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; <span class="comment">// scale grayscale values to 0..255 range</span></div>
+<div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160;</div>
+<div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160; <span class="comment">// note that the final byte might overshoot and write more data than desired.</span></div>
+<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; <span class="comment">// we can allocate enough data that this never writes out of memory, but it</span></div>
+<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160; <span class="comment">// could also overwrite the next scanline. can it overwrite non-empty data</span></div>
+<div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160; <span class="comment">// on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel.</span></div>
+<div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160; <span class="comment">// so we need to explicitly clamp the final ones</span></div>
+<div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;</div>
+<div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160; <span class="keywordflow">if</span> (depth == 4) {</div>
+<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160; <span class="keywordflow">for</span> (k=x*img_n; k &gt;= 2; k-=2, ++in) {</div>
+<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160; *cur++ = scale * ((*in &gt;&gt; 4) );</div>
+<div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160; *cur++ = scale * ((*in ) &amp; 0x0f);</div>
+<div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160; }</div>
+<div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160; <span class="keywordflow">if</span> (k &gt; 0) *cur++ = scale * ((*in &gt;&gt; 4) );</div>
+<div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (depth == 2) {</div>
+<div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <span class="keywordflow">for</span> (k=x*img_n; k &gt;= 4; k-=4, ++in) {</div>
+<div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; *cur++ = scale * ((*in &gt;&gt; 6) );</div>
+<div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160; *cur++ = scale * ((*in &gt;&gt; 4) &amp; 0x03);</div>
+<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; *cur++ = scale * ((*in &gt;&gt; 2) &amp; 0x03);</div>
+<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; *cur++ = scale * ((*in ) &amp; 0x03);</div>
+<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; }</div>
+<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160; <span class="keywordflow">if</span> (k &gt; 0) *cur++ = scale * ((*in &gt;&gt; 6) );</div>
+<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160; <span class="keywordflow">if</span> (k &gt; 1) *cur++ = scale * ((*in &gt;&gt; 4) &amp; 0x03);</div>
+<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; <span class="keywordflow">if</span> (k &gt; 2) *cur++ = scale * ((*in &gt;&gt; 2) &amp; 0x03);</div>
+<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (depth == 1) {</div>
+<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; <span class="keywordflow">for</span> (k=x*img_n; k &gt;= 8; k-=8, ++in) {</div>
+<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; *cur++ = scale * ((*in &gt;&gt; 7) );</div>
+<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160; *cur++ = scale * ((*in &gt;&gt; 6) &amp; 0x01);</div>
+<div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160; *cur++ = scale * ((*in &gt;&gt; 5) &amp; 0x01);</div>
+<div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; *cur++ = scale * ((*in &gt;&gt; 4) &amp; 0x01);</div>
+<div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160; *cur++ = scale * ((*in &gt;&gt; 3) &amp; 0x01);</div>
+<div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; *cur++ = scale * ((*in &gt;&gt; 2) &amp; 0x01);</div>
+<div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160; *cur++ = scale * ((*in &gt;&gt; 1) &amp; 0x01);</div>
+<div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160; *cur++ = scale * ((*in ) &amp; 0x01);</div>
+<div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160; }</div>
+<div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160; <span class="keywordflow">if</span> (k &gt; 0) *cur++ = scale * ((*in &gt;&gt; 7) );</div>
+<div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160; <span class="keywordflow">if</span> (k &gt; 1) *cur++ = scale * ((*in &gt;&gt; 6) &amp; 0x01);</div>
+<div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160; <span class="keywordflow">if</span> (k &gt; 2) *cur++ = scale * ((*in &gt;&gt; 5) &amp; 0x01);</div>
+<div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160; <span class="keywordflow">if</span> (k &gt; 3) *cur++ = scale * ((*in &gt;&gt; 4) &amp; 0x01);</div>
+<div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160; <span class="keywordflow">if</span> (k &gt; 4) *cur++ = scale * ((*in &gt;&gt; 3) &amp; 0x01);</div>
+<div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160; <span class="keywordflow">if</span> (k &gt; 5) *cur++ = scale * ((*in &gt;&gt; 2) &amp; 0x01);</div>
+<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160; <span class="keywordflow">if</span> (k &gt; 6) *cur++ = scale * ((*in &gt;&gt; 1) &amp; 0x01);</div>
+<div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160; }</div>
+<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160; <span class="keywordflow">if</span> (img_n != out_n) {</div>
+<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160; <span class="keywordtype">int</span> q;</div>
+<div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160; <span class="comment">// insert alpha = 255</span></div>
+<div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160; cur = a-&gt;out + stride*j;</div>
+<div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160; <span class="keywordflow">if</span> (img_n == 1) {</div>
+<div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160; <span class="keywordflow">for</span> (q=x-1; q &gt;= 0; --q) {</div>
+<div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160; cur[q*2+1] = 255;</div>
+<div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160; cur[q*2+0] = cur[q];</div>
+<div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160; }</div>
+<div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>&#160; STBI_ASSERT(img_n == 3);</div>
+<div class="line"><a name="l04466"></a><span class="lineno"> 4466</span>&#160; <span class="keywordflow">for</span> (q=x-1; q &gt;= 0; --q) {</div>
+<div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>&#160; cur[q*4+3] = 255;</div>
+<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160; cur[q*4+2] = cur[q*3+2];</div>
+<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160; cur[q*4+1] = cur[q*3+1];</div>
+<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160; cur[q*4+0] = cur[q*3+0];</div>
+<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160; }</div>
+<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160; }</div>
+<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160; }</div>
+<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160; }</div>
+<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (depth == 16) {</div>
+<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <span class="comment">// force the image data from big-endian to platform-native.</span></div>
+<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160; <span class="comment">// this is done in a separate pass due to the decoding relying</span></div>
+<div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160; <span class="comment">// on the data being untouched, but could probably be done</span></div>
+<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160; <span class="comment">// per-line during decode if care is taken.</span></div>
+<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *cur = a-&gt;out;</div>
+<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160; stbi__uint16 *cur16 = (stbi__uint16*)cur;</div>
+<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160;</div>
+<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160; <span class="keywordflow">for</span>(i=0; i &lt; x*y*out_n; ++i,cur16++,cur+=2) {</div>
+<div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>&#160; *cur16 = (cur[0] &lt;&lt; 8) | cur[1];</div>
+<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160; }</div>
+<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160; }</div>
+<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160;</div>
+<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160;}</div>
+<div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>&#160;</div>
+<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__create_png_image(stbi__png *a, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *image_data, stbi__uint32 image_data_len, <span class="keywordtype">int</span> out_n, <span class="keywordtype">int</span> depth, <span class="keywordtype">int</span> color, <span class="keywordtype">int</span> interlaced)</div>
+<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160;{</div>
+<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160; <span class="keywordtype">int</span> bytes = (depth == 16 ? 2 : 1);</div>
+<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160; <span class="keywordtype">int</span> out_bytes = out_n * bytes;</div>
+<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *<span class="keyword">final</span>;</div>
+<div class="line"><a name="l04496"></a><span class="lineno"> 4496</span>&#160; <span class="keywordtype">int</span> p;</div>
+<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160; <span class="keywordflow">if</span> (!interlaced)</div>
+<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160; <span class="keywordflow">return</span> stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a-&gt;s-&gt;img_x, a-&gt;s-&gt;img_y, depth, color);</div>
+<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>&#160;</div>
+<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160; <span class="comment">// de-interlacing</span></div>
+<div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>&#160; <span class="keyword">final</span> = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(a-&gt;s-&gt;img_x, a-&gt;s-&gt;img_y, out_bytes, 0);</div>
+<div class="line"><a name="l04502"></a><span class="lineno"> 4502</span>&#160; <span class="keywordflow">for</span> (p=0; p &lt; 7; ++p) {</div>
+<div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160; <span class="keywordtype">int</span> xorig[] = { 0,4,0,2,0,1,0 };</div>
+<div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160; <span class="keywordtype">int</span> yorig[] = { 0,0,4,0,2,0,1 };</div>
+<div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160; <span class="keywordtype">int</span> xspc[] = { 8,8,4,4,2,2,1 };</div>
+<div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160; <span class="keywordtype">int</span> yspc[] = { 8,8,8,4,4,2,2 };</div>
+<div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160; <span class="keywordtype">int</span> i,j,x,y;</div>
+<div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>&#160; <span class="comment">// pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1</span></div>
+<div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160; x = (a-&gt;s-&gt;img_x - xorig[p] + xspc[p]-1) / xspc[p];</div>
+<div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160; y = (a-&gt;s-&gt;img_y - yorig[p] + yspc[p]-1) / yspc[p];</div>
+<div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160; <span class="keywordflow">if</span> (x &amp;&amp; y) {</div>
+<div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160; stbi__uint32 img_len = ((((a-&gt;s-&gt;img_n * x * depth) + 7) &gt;&gt; 3) + 1) * y;</div>
+<div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160; <span class="keywordflow">if</span> (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) {</div>
+<div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>&#160; STBI_FREE(<span class="keyword">final</span>);</div>
+<div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>&#160; }</div>
+<div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; y; ++j) {</div>
+<div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; x; ++i) {</div>
+<div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160; <span class="keywordtype">int</span> out_y = j*yspc[p]+yorig[p];</div>
+<div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160; <span class="keywordtype">int</span> out_x = i*xspc[p]+xorig[p];</div>
+<div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160; memcpy(<span class="keyword">final</span> + out_y*a-&gt;s-&gt;img_x*out_bytes + out_x*out_bytes,</div>
+<div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160; a-&gt;out + (j*x+i)*out_bytes, out_bytes);</div>
+<div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>&#160; }</div>
+<div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>&#160; }</div>
+<div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>&#160; STBI_FREE(a-&gt;out);</div>
+<div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>&#160; image_data += img_len;</div>
+<div class="line"><a name="l04527"></a><span class="lineno"> 4527</span>&#160; image_data_len -= img_len;</div>
+<div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160; }</div>
+<div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160; }</div>
+<div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160; a-&gt;out = <span class="keyword">final</span>;</div>
+<div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160;</div>
+<div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160;}</div>
+<div class="line"><a name="l04534"></a><span class="lineno"> 4534</span>&#160;</div>
+<div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__compute_transparency(stbi__png *z, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> tc[3], <span class="keywordtype">int</span> out_n)</div>
+<div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160;{</div>
+<div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160; stbi__context *s = z-&gt;s;</div>
+<div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160; stbi__uint32 i, pixel_count = s-&gt;img_x * s-&gt;img_y;</div>
+<div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p = z-&gt;out;</div>
+<div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160;</div>
+<div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160; <span class="comment">// compute color-based transparency, assuming we&#39;ve</span></div>
+<div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160; <span class="comment">// already got 255 as the alpha value in the output</span></div>
+<div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160; STBI_ASSERT(out_n == 2 || out_n == 4);</div>
+<div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160;</div>
+<div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160; <span class="keywordflow">if</span> (out_n == 2) {</div>
+<div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160; p[1] = (p[0] == tc[0] ? 0 : 255);</div>
+<div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160; p += 2;</div>
+<div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160; }</div>
+<div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160; <span class="keywordflow">if</span> (p[0] == tc[0] &amp;&amp; p[1] == tc[1] &amp;&amp; p[2] == tc[2])</div>
+<div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160; p[3] = 0;</div>
+<div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160; p += 4;</div>
+<div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160; }</div>
+<div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160; }</div>
+<div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160;}</div>
+<div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>&#160;</div>
+<div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], <span class="keywordtype">int</span> out_n)</div>
+<div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160;{</div>
+<div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160; stbi__context *s = z-&gt;s;</div>
+<div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160; stbi__uint32 i, pixel_count = s-&gt;img_x * s-&gt;img_y;</div>
+<div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160; stbi__uint16 *p = (stbi__uint16*) z-&gt;out;</div>
+<div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160;</div>
+<div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160; <span class="comment">// compute color-based transparency, assuming we&#39;ve</span></div>
+<div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160; <span class="comment">// already got 65535 as the alpha value in the output</span></div>
+<div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160; STBI_ASSERT(out_n == 2 || out_n == 4);</div>
+<div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160;</div>
+<div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160; <span class="keywordflow">if</span> (out_n == 2) {</div>
+<div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160; p[1] = (p[0] == tc[0] ? 0 : 65535);</div>
+<div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160; p += 2;</div>
+<div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>&#160; }</div>
+<div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>&#160; <span class="keywordflow">if</span> (p[0] == tc[0] &amp;&amp; p[1] == tc[1] &amp;&amp; p[2] == tc[2])</div>
+<div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>&#160; p[3] = 0;</div>
+<div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>&#160; p += 4;</div>
+<div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>&#160; }</div>
+<div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>&#160; }</div>
+<div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>&#160;}</div>
+<div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>&#160;</div>
+<div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__expand_png_palette(stbi__png *a, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *palette, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> pal_img_n)</div>
+<div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>&#160;{</div>
+<div class="line"><a name="l04587"></a><span class="lineno"> 4587</span>&#160; stbi__uint32 i, pixel_count = a-&gt;s-&gt;img_x * a-&gt;s-&gt;img_y;</div>
+<div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p, *temp_out, *orig = a-&gt;out;</div>
+<div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160;</div>
+<div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160; p = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad2(pixel_count, pal_img_n, 0);</div>
+<div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>&#160; <span class="keywordflow">if</span> (p == NULL) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>&#160;</div>
+<div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>&#160; <span class="comment">// between here and free(out) below, exitting would leak</span></div>
+<div class="line"><a name="l04594"></a><span class="lineno"> 4594</span>&#160; temp_out = p;</div>
+<div class="line"><a name="l04595"></a><span class="lineno"> 4595</span>&#160;</div>
+<div class="line"><a name="l04596"></a><span class="lineno"> 4596</span>&#160; <span class="keywordflow">if</span> (pal_img_n == 3) {</div>
+<div class="line"><a name="l04597"></a><span class="lineno"> 4597</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04598"></a><span class="lineno"> 4598</span>&#160; <span class="keywordtype">int</span> n = orig[i]*4;</div>
+<div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160; p[0] = palette[n ];</div>
+<div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160; p[1] = palette[n+1];</div>
+<div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160; p[2] = palette[n+2];</div>
+<div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160; p += 3;</div>
+<div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160; }</div>
+<div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160; <span class="keywordtype">int</span> n = orig[i]*4;</div>
+<div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>&#160; p[0] = palette[n ];</div>
+<div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>&#160; p[1] = palette[n+1];</div>
+<div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>&#160; p[2] = palette[n+2];</div>
+<div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>&#160; p[3] = palette[n+3];</div>
+<div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>&#160; p += 4;</div>
+<div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>&#160; }</div>
+<div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>&#160; }</div>
+<div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160; STBI_FREE(a-&gt;out);</div>
+<div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>&#160; a-&gt;out = temp_out;</div>
+<div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>&#160;</div>
+<div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>&#160; STBI_NOTUSED(len);</div>
+<div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>&#160;</div>
+<div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>&#160;}</div>
+<div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>&#160;</div>
+<div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__unpremultiply_on_load = 0;</div>
+<div class="line"><a name="l04623"></a><span class="lineno"> 4623</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__de_iphone_flag = 0;</div>
+<div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>&#160;</div>
+<div class="line"><a name="l04625"></a><span class="lineno"> 4625</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stbi_set_unpremultiply_on_load</a>(<span class="keywordtype">int</span> flag_true_if_should_unpremultiply)</div>
+<div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>&#160;{</div>
+<div class="line"><a name="l04627"></a><span class="lineno"> 4627</span>&#160; stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply;</div>
+<div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>&#160;}</div>
+<div class="line"><a name="l04629"></a><span class="lineno"> 4629</span>&#160;</div>
+<div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">void</span> <a class="code" href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stbi_convert_iphone_png_to_rgb</a>(<span class="keywordtype">int</span> flag_true_if_should_convert)</div>
+<div class="line"><a name="l04631"></a><span class="lineno"> 4631</span>&#160;{</div>
+<div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>&#160; stbi__de_iphone_flag = flag_true_if_should_convert;</div>
+<div class="line"><a name="l04633"></a><span class="lineno"> 4633</span>&#160;}</div>
+<div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>&#160;</div>
+<div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__de_iphone(stbi__png *z)</div>
+<div class="line"><a name="l04636"></a><span class="lineno"> 4636</span>&#160;{</div>
+<div class="line"><a name="l04637"></a><span class="lineno"> 4637</span>&#160; stbi__context *s = z-&gt;s;</div>
+<div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>&#160; stbi__uint32 i, pixel_count = s-&gt;img_x * s-&gt;img_y;</div>
+<div class="line"><a name="l04639"></a><span class="lineno"> 4639</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p = z-&gt;out;</div>
+<div class="line"><a name="l04640"></a><span class="lineno"> 4640</span>&#160;</div>
+<div class="line"><a name="l04641"></a><span class="lineno"> 4641</span>&#160; <span class="keywordflow">if</span> (s-&gt;img_out_n == 3) { <span class="comment">// convert bgr to rgb</span></div>
+<div class="line"><a name="l04642"></a><span class="lineno"> 4642</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04643"></a><span class="lineno"> 4643</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> t = p[0];</div>
+<div class="line"><a name="l04644"></a><span class="lineno"> 4644</span>&#160; p[0] = p[2];</div>
+<div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>&#160; p[2] = t;</div>
+<div class="line"><a name="l04646"></a><span class="lineno"> 4646</span>&#160; p += 3;</div>
+<div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>&#160; }</div>
+<div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160; STBI_ASSERT(s-&gt;img_out_n == 4);</div>
+<div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160; <span class="keywordflow">if</span> (stbi__unpremultiply_on_load) {</div>
+<div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160; <span class="comment">// convert bgr to rgb and unpremultiply</span></div>
+<div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> a = p[3];</div>
+<div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> t = p[0];</div>
+<div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160; <span class="keywordflow">if</span> (a) {</div>
+<div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> half = a / 2;</div>
+<div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160; p[0] = (p[2] * 255 + half) / a;</div>
+<div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160; p[1] = (p[1] * 255 + half) / a;</div>
+<div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160; p[2] = ( t * 255 + half) / a;</div>
+<div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04661"></a><span class="lineno"> 4661</span>&#160; p[0] = p[2];</div>
+<div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>&#160; p[2] = t;</div>
+<div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>&#160; }</div>
+<div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>&#160; p += 4;</div>
+<div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>&#160; }</div>
+<div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>&#160; <span class="comment">// convert bgr to rgb</span></div>
+<div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pixel_count; ++i) {</div>
+<div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> t = p[0];</div>
+<div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160; p[0] = p[2];</div>
+<div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>&#160; p[2] = t;</div>
+<div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>&#160; p += 4;</div>
+<div class="line"><a name="l04673"></a><span class="lineno"> 4673</span>&#160; }</div>
+<div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>&#160; }</div>
+<div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>&#160; }</div>
+<div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>&#160;}</div>
+<div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>&#160;</div>
+<div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>&#160;<span class="preprocessor">#define STBI__PNG_TYPE(a,b,c,d) (((a) &lt;&lt; 24) + ((b) &lt;&lt; 16) + ((c) &lt;&lt; 8) + (d))</span></div>
+<div class="line"><a name="l04679"></a><span class="lineno"> 4679</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__parse_png_file(stbi__png *z, <span class="keywordtype">int</span> scan, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>&#160;{</div>
+<div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> palette[1024], pal_img_n=0;</div>
+<div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> has_trans=0, tc[3];</div>
+<div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>&#160; stbi__uint16 tc16[3];</div>
+<div class="line"><a name="l04685"></a><span class="lineno"> 4685</span>&#160; stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0;</div>
+<div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>&#160; <span class="keywordtype">int</span> first=1,k,interlace=0, color=0, is_iphone=0;</div>
+<div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>&#160; stbi__context *s = z-&gt;s;</div>
+<div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>&#160;</div>
+<div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>&#160; z-&gt;expanded = NULL;</div>
+<div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>&#160; z-&gt;idata = NULL;</div>
+<div class="line"><a name="l04691"></a><span class="lineno"> 4691</span>&#160; z-&gt;out = NULL;</div>
+<div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>&#160;</div>
+<div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>&#160; <span class="keywordflow">if</span> (!stbi__check_png_header(s)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>&#160;</div>
+<div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>&#160; <span class="keywordflow">if</span> (scan == STBI__SCAN_type) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04696"></a><span class="lineno"> 4696</span>&#160;</div>
+<div class="line"><a name="l04697"></a><span class="lineno"> 4697</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
+<div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160; stbi__pngchunk c = stbi__get_chunk_header(s);</div>
+<div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160; <span class="keywordflow">switch</span> (c.type) {</div>
+<div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;C&#39;</span>,<span class="charliteral">&#39;g&#39;</span>,<span class="charliteral">&#39;B&#39;</span>,<span class="charliteral">&#39;I&#39;</span>):</div>
+<div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>&#160; is_iphone = 1;</div>
+<div class="line"><a name="l04702"></a><span class="lineno"> 4702</span>&#160; stbi__skip(s, c.length);</div>
+<div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;I&#39;</span>,<span class="charliteral">&#39;H&#39;</span>,<span class="charliteral">&#39;D&#39;</span>,<span class="charliteral">&#39;R&#39;</span>): {</div>
+<div class="line"><a name="l04705"></a><span class="lineno"> 4705</span>&#160; <span class="keywordtype">int</span> comp,filter;</div>
+<div class="line"><a name="l04706"></a><span class="lineno"> 4706</span>&#160; <span class="keywordflow">if</span> (!first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;multiple IHDR&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>&#160; first = 0;</div>
+<div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>&#160; <span class="keywordflow">if</span> (c.length != 13) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad IHDR len&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>&#160; s-&gt;img_x = stbi__get32be(s); <span class="keywordflow">if</span> (s-&gt;img_x &gt; (1 &lt;&lt; 24)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;too large&quot;</span>,<span class="stringliteral">&quot;Very large image (corrupt?)&quot;</span>);</div>
+<div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>&#160; s-&gt;img_y = stbi__get32be(s); <span class="keywordflow">if</span> (s-&gt;img_y &gt; (1 &lt;&lt; 24)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;too large&quot;</span>,<span class="stringliteral">&quot;Very large image (corrupt?)&quot;</span>);</div>
+<div class="line"><a name="l04711"></a><span class="lineno"> 4711</span>&#160; z-&gt;depth = stbi__get8(s); <span class="keywordflow">if</span> (z-&gt;depth != 1 &amp;&amp; z-&gt;depth != 2 &amp;&amp; z-&gt;depth != 4 &amp;&amp; z-&gt;depth != 8 &amp;&amp; z-&gt;depth != 16) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;1/2/4/8/16-bit only&quot;</span>,<span class="stringliteral">&quot;PNG not supported: 1/2/4/8/16-bit only&quot;</span>);</div>
+<div class="line"><a name="l04712"></a><span class="lineno"> 4712</span>&#160; color = stbi__get8(s); <span class="keywordflow">if</span> (color &gt; 6) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad ctype&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04713"></a><span class="lineno"> 4713</span>&#160; <span class="keywordflow">if</span> (color == 3 &amp;&amp; z-&gt;depth == 16) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad ctype&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04714"></a><span class="lineno"> 4714</span>&#160; <span class="keywordflow">if</span> (color == 3) pal_img_n = 3; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (color &amp; 1) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad ctype&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04715"></a><span class="lineno"> 4715</span>&#160; comp = stbi__get8(s); <span class="keywordflow">if</span> (comp) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad comp method&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04716"></a><span class="lineno"> 4716</span>&#160; filter= stbi__get8(s); <span class="keywordflow">if</span> (filter) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad filter method&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04717"></a><span class="lineno"> 4717</span>&#160; interlace = stbi__get8(s); <span class="keywordflow">if</span> (interlace&gt;1) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad interlace method&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04718"></a><span class="lineno"> 4718</span>&#160; <span class="keywordflow">if</span> (!s-&gt;img_x || !s-&gt;img_y) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;0-pixel image&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>&#160; <span class="keywordflow">if</span> (!pal_img_n) {</div>
+<div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>&#160; s-&gt;img_n = (color &amp; 2 ? 3 : 1) + (color &amp; 4 ? 1 : 0);</div>
+<div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>&#160; <span class="keywordflow">if</span> ((1 &lt;&lt; 30) / s-&gt;img_x / s-&gt;img_n &lt; s-&gt;img_y) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;Image too large to decode&quot;</span>);</div>
+<div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>&#160; <span class="keywordflow">if</span> (scan == STBI__SCAN_header) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04724"></a><span class="lineno"> 4724</span>&#160; <span class="comment">// if paletted, then pal_n is our final components, and</span></div>
+<div class="line"><a name="l04725"></a><span class="lineno"> 4725</span>&#160; <span class="comment">// img_n is # components to decompress/filter.</span></div>
+<div class="line"><a name="l04726"></a><span class="lineno"> 4726</span>&#160; s-&gt;img_n = 1;</div>
+<div class="line"><a name="l04727"></a><span class="lineno"> 4727</span>&#160; <span class="keywordflow">if</span> ((1 &lt;&lt; 30) / s-&gt;img_x / 4 &lt; s-&gt;img_y) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;too large&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>&#160; <span class="comment">// if SCAN_header, have to scan to see if we have a tRNS</span></div>
+<div class="line"><a name="l04729"></a><span class="lineno"> 4729</span>&#160; }</div>
+<div class="line"><a name="l04730"></a><span class="lineno"> 4730</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04731"></a><span class="lineno"> 4731</span>&#160; }</div>
+<div class="line"><a name="l04732"></a><span class="lineno"> 4732</span>&#160;</div>
+<div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;P&#39;</span>,<span class="charliteral">&#39;L&#39;</span>,<span class="charliteral">&#39;T&#39;</span>,<span class="charliteral">&#39;E&#39;</span>): {</div>
+<div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;first not IHDR&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>&#160; <span class="keywordflow">if</span> (c.length &gt; 256*3) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;invalid PLTE&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>&#160; pal_len = c.length / 3;</div>
+<div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>&#160; <span class="keywordflow">if</span> (pal_len * 3 != c.length) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;invalid PLTE&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04738"></a><span class="lineno"> 4738</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; pal_len; ++i) {</div>
+<div class="line"><a name="l04739"></a><span class="lineno"> 4739</span>&#160; palette[i*4+0] = stbi__get8(s);</div>
+<div class="line"><a name="l04740"></a><span class="lineno"> 4740</span>&#160; palette[i*4+1] = stbi__get8(s);</div>
+<div class="line"><a name="l04741"></a><span class="lineno"> 4741</span>&#160; palette[i*4+2] = stbi__get8(s);</div>
+<div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>&#160; palette[i*4+3] = 255;</div>
+<div class="line"><a name="l04743"></a><span class="lineno"> 4743</span>&#160; }</div>
+<div class="line"><a name="l04744"></a><span class="lineno"> 4744</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04745"></a><span class="lineno"> 4745</span>&#160; }</div>
+<div class="line"><a name="l04746"></a><span class="lineno"> 4746</span>&#160;</div>
+<div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;t&#39;</span>,<span class="charliteral">&#39;R&#39;</span>,<span class="charliteral">&#39;N&#39;</span>,<span class="charliteral">&#39;S&#39;</span>): {</div>
+<div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;first not IHDR&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>&#160; <span class="keywordflow">if</span> (z-&gt;idata) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;tRNS after IDAT&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>&#160; <span class="keywordflow">if</span> (pal_img_n) {</div>
+<div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160; <span class="keywordflow">if</span> (scan == STBI__SCAN_header) { s-&gt;img_n = 4; <span class="keywordflow">return</span> 1; }</div>
+<div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160; <span class="keywordflow">if</span> (pal_len == 0) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;tRNS before PLTE&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160; <span class="keywordflow">if</span> (c.length &gt; pal_len) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad tRNS len&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>&#160; pal_img_n = 4;</div>
+<div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; c.length; ++i)</div>
+<div class="line"><a name="l04756"></a><span class="lineno"> 4756</span>&#160; palette[i*4+3] = stbi__get8(s);</div>
+<div class="line"><a name="l04757"></a><span class="lineno"> 4757</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04758"></a><span class="lineno"> 4758</span>&#160; <span class="keywordflow">if</span> (!(s-&gt;img_n &amp; 1)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;tRNS with alpha&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04759"></a><span class="lineno"> 4759</span>&#160; <span class="keywordflow">if</span> (c.length != (stbi__uint32) s-&gt;img_n*2) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;bad tRNS len&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04760"></a><span class="lineno"> 4760</span>&#160; has_trans = 1;</div>
+<div class="line"><a name="l04761"></a><span class="lineno"> 4761</span>&#160; <span class="keywordflow">if</span> (z-&gt;depth == 16) {</div>
+<div class="line"><a name="l04762"></a><span class="lineno"> 4762</span>&#160; <span class="keywordflow">for</span> (k = 0; k &lt; s-&gt;img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); <span class="comment">// copy the values as-is</span></div>
+<div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>&#160; <span class="keywordflow">for</span> (k = 0; k &lt; s-&gt;img_n; ++k) tc[k] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)(stbi__get16be(s) &amp; 255) * stbi__depth_scale_table[z-&gt;depth]; <span class="comment">// non 8-bit images will be larger</span></div>
+<div class="line"><a name="l04765"></a><span class="lineno"> 4765</span>&#160; }</div>
+<div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>&#160; }</div>
+<div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04768"></a><span class="lineno"> 4768</span>&#160; }</div>
+<div class="line"><a name="l04769"></a><span class="lineno"> 4769</span>&#160;</div>
+<div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;I&#39;</span>,<span class="charliteral">&#39;D&#39;</span>,<span class="charliteral">&#39;A&#39;</span>,<span class="charliteral">&#39;T&#39;</span>): {</div>
+<div class="line"><a name="l04771"></a><span class="lineno"> 4771</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;first not IHDR&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04772"></a><span class="lineno"> 4772</span>&#160; <span class="keywordflow">if</span> (pal_img_n &amp;&amp; !pal_len) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no PLTE&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>&#160; <span class="keywordflow">if</span> (scan == STBI__SCAN_header) { s-&gt;img_n = pal_img_n; <span class="keywordflow">return</span> 1; }</div>
+<div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">int</span>)(ioff + c.length) &lt; (<span class="keywordtype">int</span>)ioff) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160; <span class="keywordflow">if</span> (ioff + c.length &gt; idata_limit) {</div>
+<div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160; stbi__uint32 idata_limit_old = idata_limit;</div>
+<div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p;</div>
+<div class="line"><a name="l04778"></a><span class="lineno"> 4778</span>&#160; <span class="keywordflow">if</span> (idata_limit == 0) idata_limit = c.length &gt; 4096 ? c.length : 4096;</div>
+<div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160; <span class="keywordflow">while</span> (ioff + c.length &gt; idata_limit)</div>
+<div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160; idata_limit *= 2;</div>
+<div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160; STBI_NOTUSED(idata_limit_old);</div>
+<div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>&#160; p = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) STBI_REALLOC_SIZED(z-&gt;idata, idata_limit_old, idata_limit); <span class="keywordflow">if</span> (p == NULL) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>&#160; z-&gt;idata = p;</div>
+<div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>&#160; }</div>
+<div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>&#160; <span class="keywordflow">if</span> (!stbi__getn(s, z-&gt;idata+ioff,c.length)) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;outofdata&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>&#160; ioff += c.length;</div>
+<div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>&#160; }</div>
+<div class="line"><a name="l04789"></a><span class="lineno"> 4789</span>&#160;</div>
+<div class="line"><a name="l04790"></a><span class="lineno"> 4790</span>&#160; <span class="keywordflow">case</span> STBI__PNG_TYPE(<span class="charliteral">&#39;I&#39;</span>,<span class="charliteral">&#39;E&#39;</span>,<span class="charliteral">&#39;N&#39;</span>,<span class="charliteral">&#39;D&#39;</span>): {</div>
+<div class="line"><a name="l04791"></a><span class="lineno"> 4791</span>&#160; stbi__uint32 raw_len, bpl;</div>
+<div class="line"><a name="l04792"></a><span class="lineno"> 4792</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;first not IHDR&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04793"></a><span class="lineno"> 4793</span>&#160; <span class="keywordflow">if</span> (scan != STBI__SCAN_load) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04794"></a><span class="lineno"> 4794</span>&#160; <span class="keywordflow">if</span> (z-&gt;idata == NULL) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;no IDAT&quot;</span>,<span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04795"></a><span class="lineno"> 4795</span>&#160; <span class="comment">// initial guess for decoded data size to avoid unnecessary reallocs</span></div>
+<div class="line"><a name="l04796"></a><span class="lineno"> 4796</span>&#160; bpl = (s-&gt;img_x * z-&gt;depth + 7) / 8; <span class="comment">// bytes per line, per component</span></div>
+<div class="line"><a name="l04797"></a><span class="lineno"> 4797</span>&#160; raw_len = bpl * s-&gt;img_y * s-&gt;img_n <span class="comment">/* pixels */</span> + s-&gt;img_y <span class="comment">/* filter mode per row */</span>;</div>
+<div class="line"><a name="l04798"></a><span class="lineno"> 4798</span>&#160; z-&gt;expanded = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) <a class="code" href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stbi_zlib_decode_malloc_guesssize_headerflag</a>((<span class="keywordtype">char</span> *) z-&gt;idata, ioff, raw_len, (<span class="keywordtype">int</span> *) &amp;raw_len, !is_iphone);</div>
+<div class="line"><a name="l04799"></a><span class="lineno"> 4799</span>&#160; <span class="keywordflow">if</span> (z-&gt;expanded == NULL) <span class="keywordflow">return</span> 0; <span class="comment">// zlib should set error</span></div>
+<div class="line"><a name="l04800"></a><span class="lineno"> 4800</span>&#160; STBI_FREE(z-&gt;idata); z-&gt;idata = NULL;</div>
+<div class="line"><a name="l04801"></a><span class="lineno"> 4801</span>&#160; <span class="keywordflow">if</span> ((req_comp == s-&gt;img_n+1 &amp;&amp; req_comp != 3 &amp;&amp; !pal_img_n) || has_trans)</div>
+<div class="line"><a name="l04802"></a><span class="lineno"> 4802</span>&#160; s-&gt;img_out_n = s-&gt;img_n+1;</div>
+<div class="line"><a name="l04803"></a><span class="lineno"> 4803</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04804"></a><span class="lineno"> 4804</span>&#160; s-&gt;img_out_n = s-&gt;img_n;</div>
+<div class="line"><a name="l04805"></a><span class="lineno"> 4805</span>&#160; <span class="keywordflow">if</span> (!stbi__create_png_image(z, z-&gt;expanded, raw_len, s-&gt;img_out_n, z-&gt;depth, color, interlace)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04806"></a><span class="lineno"> 4806</span>&#160; <span class="keywordflow">if</span> (has_trans) {</div>
+<div class="line"><a name="l04807"></a><span class="lineno"> 4807</span>&#160; <span class="keywordflow">if</span> (z-&gt;depth == 16) {</div>
+<div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>&#160; <span class="keywordflow">if</span> (!stbi__compute_transparency16(z, tc16, s-&gt;img_out_n)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04810"></a><span class="lineno"> 4810</span>&#160; <span class="keywordflow">if</span> (!stbi__compute_transparency(z, tc, s-&gt;img_out_n)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04811"></a><span class="lineno"> 4811</span>&#160; }</div>
+<div class="line"><a name="l04812"></a><span class="lineno"> 4812</span>&#160; }</div>
+<div class="line"><a name="l04813"></a><span class="lineno"> 4813</span>&#160; <span class="keywordflow">if</span> (is_iphone &amp;&amp; stbi__de_iphone_flag &amp;&amp; s-&gt;img_out_n &gt; 2)</div>
+<div class="line"><a name="l04814"></a><span class="lineno"> 4814</span>&#160; stbi__de_iphone(z);</div>
+<div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>&#160; <span class="keywordflow">if</span> (pal_img_n) {</div>
+<div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>&#160; <span class="comment">// pal_img_n == 3 or 4</span></div>
+<div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>&#160; s-&gt;img_n = pal_img_n; <span class="comment">// record the actual colors we had</span></div>
+<div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>&#160; s-&gt;img_out_n = pal_img_n;</div>
+<div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>&#160; <span class="keywordflow">if</span> (req_comp &gt;= 3) s-&gt;img_out_n = req_comp;</div>
+<div class="line"><a name="l04820"></a><span class="lineno"> 4820</span>&#160; <span class="keywordflow">if</span> (!stbi__expand_png_palette(z, palette, pal_len, s-&gt;img_out_n))</div>
+<div class="line"><a name="l04821"></a><span class="lineno"> 4821</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04822"></a><span class="lineno"> 4822</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (has_trans) {</div>
+<div class="line"><a name="l04823"></a><span class="lineno"> 4823</span>&#160; <span class="comment">// non-paletted image with tRNS -&gt; source image has (constant) alpha</span></div>
+<div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>&#160; ++s-&gt;img_n;</div>
+<div class="line"><a name="l04825"></a><span class="lineno"> 4825</span>&#160; }</div>
+<div class="line"><a name="l04826"></a><span class="lineno"> 4826</span>&#160; STBI_FREE(z-&gt;expanded); z-&gt;expanded = NULL;</div>
+<div class="line"><a name="l04827"></a><span class="lineno"> 4827</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04828"></a><span class="lineno"> 4828</span>&#160; }</div>
+<div class="line"><a name="l04829"></a><span class="lineno"> 4829</span>&#160;</div>
+<div class="line"><a name="l04830"></a><span class="lineno"> 4830</span>&#160; <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l04831"></a><span class="lineno"> 4831</span>&#160; <span class="comment">// if critical, fail</span></div>
+<div class="line"><a name="l04832"></a><span class="lineno"> 4832</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;first not IHDR&quot;</span>, <span class="stringliteral">&quot;Corrupt PNG&quot;</span>);</div>
+<div class="line"><a name="l04833"></a><span class="lineno"> 4833</span>&#160; <span class="keywordflow">if</span> ((c.type &amp; (1 &lt;&lt; 29)) == 0) {</div>
+<div class="line"><a name="l04834"></a><span class="lineno"> 4834</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_FAILURE_STRINGS</span></div>
+<div class="line"><a name="l04835"></a><span class="lineno"> 4835</span>&#160;<span class="preprocessor"></span> <span class="comment">// not threadsafe</span></div>
+<div class="line"><a name="l04836"></a><span class="lineno"> 4836</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> invalid_chunk[] = <span class="stringliteral">&quot;XXXX PNG chunk not known&quot;</span>;</div>
+<div class="line"><a name="l04837"></a><span class="lineno"> 4837</span>&#160; invalid_chunk[0] = STBI__BYTECAST(c.type &gt;&gt; 24);</div>
+<div class="line"><a name="l04838"></a><span class="lineno"> 4838</span>&#160; invalid_chunk[1] = STBI__BYTECAST(c.type &gt;&gt; 16);</div>
+<div class="line"><a name="l04839"></a><span class="lineno"> 4839</span>&#160; invalid_chunk[2] = STBI__BYTECAST(c.type &gt;&gt; 8);</div>
+<div class="line"><a name="l04840"></a><span class="lineno"> 4840</span>&#160; invalid_chunk[3] = STBI__BYTECAST(c.type &gt;&gt; 0);</div>
+<div class="line"><a name="l04841"></a><span class="lineno"> 4841</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l04842"></a><span class="lineno"> 4842</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> stbi__err(invalid_chunk, <span class="stringliteral">&quot;PNG not supported: unknown PNG chunk type&quot;</span>);</div>
+<div class="line"><a name="l04843"></a><span class="lineno"> 4843</span>&#160; }</div>
+<div class="line"><a name="l04844"></a><span class="lineno"> 4844</span>&#160; stbi__skip(s, c.length);</div>
+<div class="line"><a name="l04845"></a><span class="lineno"> 4845</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04846"></a><span class="lineno"> 4846</span>&#160; }</div>
+<div class="line"><a name="l04847"></a><span class="lineno"> 4847</span>&#160; <span class="comment">// end of PNG chunk, read and skip CRC</span></div>
+<div class="line"><a name="l04848"></a><span class="lineno"> 4848</span>&#160; stbi__get32be(s);</div>
+<div class="line"><a name="l04849"></a><span class="lineno"> 4849</span>&#160; }</div>
+<div class="line"><a name="l04850"></a><span class="lineno"> 4850</span>&#160;}</div>
+<div class="line"><a name="l04851"></a><span class="lineno"> 4851</span>&#160;</div>
+<div class="line"><a name="l04852"></a><span class="lineno"> 4852</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__do_png(stbi__png *p, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *n, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l04853"></a><span class="lineno"> 4853</span>&#160;{</div>
+<div class="line"><a name="l04854"></a><span class="lineno"> 4854</span>&#160; <span class="keywordtype">void</span> *result=NULL;</div>
+<div class="line"><a name="l04855"></a><span class="lineno"> 4855</span>&#160; <span class="keywordflow">if</span> (req_comp &lt; 0 || req_comp &gt; 4) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad req_comp&quot;</span>, <span class="stringliteral">&quot;Internal error&quot;</span>);</div>
+<div class="line"><a name="l04856"></a><span class="lineno"> 4856</span>&#160; <span class="keywordflow">if</span> (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {</div>
+<div class="line"><a name="l04857"></a><span class="lineno"> 4857</span>&#160; <span class="keywordflow">if</span> (p-&gt;depth &lt; 8)</div>
+<div class="line"><a name="l04858"></a><span class="lineno"> 4858</span>&#160; ri-&gt;bits_per_channel = 8;</div>
+<div class="line"><a name="l04859"></a><span class="lineno"> 4859</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04860"></a><span class="lineno"> 4860</span>&#160; ri-&gt;bits_per_channel = p-&gt;depth;</div>
+<div class="line"><a name="l04861"></a><span class="lineno"> 4861</span>&#160; result = p-&gt;out;</div>
+<div class="line"><a name="l04862"></a><span class="lineno"> 4862</span>&#160; p-&gt;out = NULL;</div>
+<div class="line"><a name="l04863"></a><span class="lineno"> 4863</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != p-&gt;s-&gt;img_out_n) {</div>
+<div class="line"><a name="l04864"></a><span class="lineno"> 4864</span>&#160; <span class="keywordflow">if</span> (ri-&gt;bits_per_channel == 8)</div>
+<div class="line"><a name="l04865"></a><span class="lineno"> 4865</span>&#160; result = stbi__convert_format((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) result, p-&gt;s-&gt;img_out_n, req_comp, p-&gt;s-&gt;img_x, p-&gt;s-&gt;img_y);</div>
+<div class="line"><a name="l04866"></a><span class="lineno"> 4866</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04867"></a><span class="lineno"> 4867</span>&#160; result = stbi__convert_format16((stbi__uint16 *) result, p-&gt;s-&gt;img_out_n, req_comp, p-&gt;s-&gt;img_x, p-&gt;s-&gt;img_y);</div>
+<div class="line"><a name="l04868"></a><span class="lineno"> 4868</span>&#160; p-&gt;s-&gt;img_out_n = req_comp;</div>
+<div class="line"><a name="l04869"></a><span class="lineno"> 4869</span>&#160; <span class="keywordflow">if</span> (result == NULL) <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l04870"></a><span class="lineno"> 4870</span>&#160; }</div>
+<div class="line"><a name="l04871"></a><span class="lineno"> 4871</span>&#160; *x = p-&gt;s-&gt;img_x;</div>
+<div class="line"><a name="l04872"></a><span class="lineno"> 4872</span>&#160; *y = p-&gt;s-&gt;img_y;</div>
+<div class="line"><a name="l04873"></a><span class="lineno"> 4873</span>&#160; <span class="keywordflow">if</span> (n) *n = p-&gt;s-&gt;img_n;</div>
+<div class="line"><a name="l04874"></a><span class="lineno"> 4874</span>&#160; }</div>
+<div class="line"><a name="l04875"></a><span class="lineno"> 4875</span>&#160; STBI_FREE(p-&gt;out); p-&gt;out = NULL;</div>
+<div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>&#160; STBI_FREE(p-&gt;expanded); p-&gt;expanded = NULL;</div>
+<div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>&#160; STBI_FREE(p-&gt;idata); p-&gt;idata = NULL;</div>
+<div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>&#160;</div>
+<div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>&#160;}</div>
+<div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>&#160;</div>
+<div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__png_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>&#160;{</div>
+<div class="line"><a name="l04884"></a><span class="lineno"> 4884</span>&#160; stbi__png p;</div>
+<div class="line"><a name="l04885"></a><span class="lineno"> 4885</span>&#160; p.s = s;</div>
+<div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>&#160; <span class="keywordflow">return</span> stbi__do_png(&amp;p, x,y,comp,req_comp, ri);</div>
+<div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>&#160;}</div>
+<div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>&#160;</div>
+<div class="line"><a name="l04889"></a><span class="lineno"> 4889</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__png_test(stbi__context *s)</div>
+<div class="line"><a name="l04890"></a><span class="lineno"> 4890</span>&#160;{</div>
+<div class="line"><a name="l04891"></a><span class="lineno"> 4891</span>&#160; <span class="keywordtype">int</span> r;</div>
+<div class="line"><a name="l04892"></a><span class="lineno"> 4892</span>&#160; r = stbi__check_png_header(s);</div>
+<div class="line"><a name="l04893"></a><span class="lineno"> 4893</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l04894"></a><span class="lineno"> 4894</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l04895"></a><span class="lineno"> 4895</span>&#160;}</div>
+<div class="line"><a name="l04896"></a><span class="lineno"> 4896</span>&#160;</div>
+<div class="line"><a name="l04897"></a><span class="lineno"> 4897</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__png_info_raw(stbi__png *p, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l04898"></a><span class="lineno"> 4898</span>&#160;{</div>
+<div class="line"><a name="l04899"></a><span class="lineno"> 4899</span>&#160; <span class="keywordflow">if</span> (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {</div>
+<div class="line"><a name="l04900"></a><span class="lineno"> 4900</span>&#160; stbi__rewind( p-&gt;s );</div>
+<div class="line"><a name="l04901"></a><span class="lineno"> 4901</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04902"></a><span class="lineno"> 4902</span>&#160; }</div>
+<div class="line"><a name="l04903"></a><span class="lineno"> 4903</span>&#160; <span class="keywordflow">if</span> (x) *x = p-&gt;s-&gt;img_x;</div>
+<div class="line"><a name="l04904"></a><span class="lineno"> 4904</span>&#160; <span class="keywordflow">if</span> (y) *y = p-&gt;s-&gt;img_y;</div>
+<div class="line"><a name="l04905"></a><span class="lineno"> 4905</span>&#160; <span class="keywordflow">if</span> (comp) *comp = p-&gt;s-&gt;img_n;</div>
+<div class="line"><a name="l04906"></a><span class="lineno"> 4906</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l04907"></a><span class="lineno"> 4907</span>&#160;}</div>
+<div class="line"><a name="l04908"></a><span class="lineno"> 4908</span>&#160;</div>
+<div class="line"><a name="l04909"></a><span class="lineno"> 4909</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__png_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l04910"></a><span class="lineno"> 4910</span>&#160;{</div>
+<div class="line"><a name="l04911"></a><span class="lineno"> 4911</span>&#160; stbi__png p;</div>
+<div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>&#160; p.s = s;</div>
+<div class="line"><a name="l04913"></a><span class="lineno"> 4913</span>&#160; <span class="keywordflow">return</span> stbi__png_info_raw(&amp;p, x, y, comp);</div>
+<div class="line"><a name="l04914"></a><span class="lineno"> 4914</span>&#160;}</div>
+<div class="line"><a name="l04915"></a><span class="lineno"> 4915</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l04916"></a><span class="lineno"> 4916</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>&#160;<span class="comment">// Microsoft/Windows BMP image</span></div>
+<div class="line"><a name="l04918"></a><span class="lineno"> 4918</span>&#160;</div>
+<div class="line"><a name="l04919"></a><span class="lineno"> 4919</span>&#160;<span class="preprocessor">#ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l04920"></a><span class="lineno"> 4920</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bmp_test_raw(stbi__context *s)</div>
+<div class="line"><a name="l04921"></a><span class="lineno"> 4921</span>&#160;{</div>
+<div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>&#160; <span class="keywordtype">int</span> r;</div>
+<div class="line"><a name="l04923"></a><span class="lineno"> 4923</span>&#160; <span class="keywordtype">int</span> sz;</div>
+<div class="line"><a name="l04924"></a><span class="lineno"> 4924</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;B&#39;</span>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04925"></a><span class="lineno"> 4925</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;M&#39;</span>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l04926"></a><span class="lineno"> 4926</span>&#160; stbi__get32le(s); <span class="comment">// discard filesize</span></div>
+<div class="line"><a name="l04927"></a><span class="lineno"> 4927</span>&#160; stbi__get16le(s); <span class="comment">// discard reserved</span></div>
+<div class="line"><a name="l04928"></a><span class="lineno"> 4928</span>&#160; stbi__get16le(s); <span class="comment">// discard reserved</span></div>
+<div class="line"><a name="l04929"></a><span class="lineno"> 4929</span>&#160; stbi__get32le(s); <span class="comment">// discard data offset</span></div>
+<div class="line"><a name="l04930"></a><span class="lineno"> 4930</span>&#160; sz = stbi__get32le(s);</div>
+<div class="line"><a name="l04931"></a><span class="lineno"> 4931</span>&#160; r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);</div>
+<div class="line"><a name="l04932"></a><span class="lineno"> 4932</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l04933"></a><span class="lineno"> 4933</span>&#160;}</div>
+<div class="line"><a name="l04934"></a><span class="lineno"> 4934</span>&#160;</div>
+<div class="line"><a name="l04935"></a><span class="lineno"> 4935</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bmp_test(stbi__context *s)</div>
+<div class="line"><a name="l04936"></a><span class="lineno"> 4936</span>&#160;{</div>
+<div class="line"><a name="l04937"></a><span class="lineno"> 4937</span>&#160; <span class="keywordtype">int</span> r = stbi__bmp_test_raw(s);</div>
+<div class="line"><a name="l04938"></a><span class="lineno"> 4938</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l04939"></a><span class="lineno"> 4939</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l04940"></a><span class="lineno"> 4940</span>&#160;}</div>
+<div class="line"><a name="l04941"></a><span class="lineno"> 4941</span>&#160;</div>
+<div class="line"><a name="l04942"></a><span class="lineno"> 4942</span>&#160;</div>
+<div class="line"><a name="l04943"></a><span class="lineno"> 4943</span>&#160;<span class="comment">// returns 0..31 for the highest set bit</span></div>
+<div class="line"><a name="l04944"></a><span class="lineno"> 4944</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__high_bit(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> z)</div>
+<div class="line"><a name="l04945"></a><span class="lineno"> 4945</span>&#160;{</div>
+<div class="line"><a name="l04946"></a><span class="lineno"> 4946</span>&#160; <span class="keywordtype">int</span> n=0;</div>
+<div class="line"><a name="l04947"></a><span class="lineno"> 4947</span>&#160; <span class="keywordflow">if</span> (z == 0) <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l04948"></a><span class="lineno"> 4948</span>&#160; <span class="keywordflow">if</span> (z &gt;= 0x10000) n += 16, z &gt;&gt;= 16;</div>
+<div class="line"><a name="l04949"></a><span class="lineno"> 4949</span>&#160; <span class="keywordflow">if</span> (z &gt;= 0x00100) n += 8, z &gt;&gt;= 8;</div>
+<div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>&#160; <span class="keywordflow">if</span> (z &gt;= 0x00010) n += 4, z &gt;&gt;= 4;</div>
+<div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>&#160; <span class="keywordflow">if</span> (z &gt;= 0x00004) n += 2, z &gt;&gt;= 2;</div>
+<div class="line"><a name="l04952"></a><span class="lineno"> 4952</span>&#160; <span class="keywordflow">if</span> (z &gt;= 0x00002) n += 1, z &gt;&gt;= 1;</div>
+<div class="line"><a name="l04953"></a><span class="lineno"> 4953</span>&#160; <span class="keywordflow">return</span> n;</div>
+<div class="line"><a name="l04954"></a><span class="lineno"> 4954</span>&#160;}</div>
+<div class="line"><a name="l04955"></a><span class="lineno"> 4955</span>&#160;</div>
+<div class="line"><a name="l04956"></a><span class="lineno"> 4956</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bitcount(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> a)</div>
+<div class="line"><a name="l04957"></a><span class="lineno"> 4957</span>&#160;{</div>
+<div class="line"><a name="l04958"></a><span class="lineno"> 4958</span>&#160; a = (a &amp; 0x55555555) + ((a &gt;&gt; 1) &amp; 0x55555555); <span class="comment">// max 2</span></div>
+<div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>&#160; a = (a &amp; 0x33333333) + ((a &gt;&gt; 2) &amp; 0x33333333); <span class="comment">// max 4</span></div>
+<div class="line"><a name="l04960"></a><span class="lineno"> 4960</span>&#160; a = (a + (a &gt;&gt; 4)) &amp; 0x0f0f0f0f; <span class="comment">// max 8 per 4, now 8 bits</span></div>
+<div class="line"><a name="l04961"></a><span class="lineno"> 4961</span>&#160; a = (a + (a &gt;&gt; 8)); <span class="comment">// max 16 per 8 bits</span></div>
+<div class="line"><a name="l04962"></a><span class="lineno"> 4962</span>&#160; a = (a + (a &gt;&gt; 16)); <span class="comment">// max 32 per 8 bits</span></div>
+<div class="line"><a name="l04963"></a><span class="lineno"> 4963</span>&#160; <span class="keywordflow">return</span> a &amp; 0xff;</div>
+<div class="line"><a name="l04964"></a><span class="lineno"> 4964</span>&#160;}</div>
+<div class="line"><a name="l04965"></a><span class="lineno"> 4965</span>&#160;</div>
+<div class="line"><a name="l04966"></a><span class="lineno"> 4966</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__shiftsigned(<span class="keywordtype">int</span> v, <span class="keywordtype">int</span> shift, <span class="keywordtype">int</span> bits)</div>
+<div class="line"><a name="l04967"></a><span class="lineno"> 4967</span>&#160;{</div>
+<div class="line"><a name="l04968"></a><span class="lineno"> 4968</span>&#160; <span class="keywordtype">int</span> result;</div>
+<div class="line"><a name="l04969"></a><span class="lineno"> 4969</span>&#160; <span class="keywordtype">int</span> z=0;</div>
+<div class="line"><a name="l04970"></a><span class="lineno"> 4970</span>&#160;</div>
+<div class="line"><a name="l04971"></a><span class="lineno"> 4971</span>&#160; <span class="keywordflow">if</span> (shift &lt; 0) v &lt;&lt;= -shift;</div>
+<div class="line"><a name="l04972"></a><span class="lineno"> 4972</span>&#160; <span class="keywordflow">else</span> v &gt;&gt;= shift;</div>
+<div class="line"><a name="l04973"></a><span class="lineno"> 4973</span>&#160; result = v;</div>
+<div class="line"><a name="l04974"></a><span class="lineno"> 4974</span>&#160;</div>
+<div class="line"><a name="l04975"></a><span class="lineno"> 4975</span>&#160; z = bits;</div>
+<div class="line"><a name="l04976"></a><span class="lineno"> 4976</span>&#160; <span class="keywordflow">while</span> (z &lt; 8) {</div>
+<div class="line"><a name="l04977"></a><span class="lineno"> 4977</span>&#160; result += v &gt;&gt; z;</div>
+<div class="line"><a name="l04978"></a><span class="lineno"> 4978</span>&#160; z += bits;</div>
+<div class="line"><a name="l04979"></a><span class="lineno"> 4979</span>&#160; }</div>
+<div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>&#160;}</div>
+<div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>&#160;</div>
+<div class="line"><a name="l04983"></a><span class="lineno"> 4983</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>&#160;{</div>
+<div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>&#160; <span class="keywordtype">int</span> bpp, offset, hsz;</div>
+<div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mr,mg,mb,ma, all_a;</div>
+<div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>&#160;} stbi__bmp_data;</div>
+<div class="line"><a name="l04988"></a><span class="lineno"> 4988</span>&#160;</div>
+<div class="line"><a name="l04989"></a><span class="lineno"> 4989</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info)</div>
+<div class="line"><a name="l04990"></a><span class="lineno"> 4990</span>&#160;{</div>
+<div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>&#160; <span class="keywordtype">int</span> hsz;</div>
+<div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;B&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;M&#39;</span>) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;not BMP&quot;</span>, <span class="stringliteral">&quot;Corrupt BMP&quot;</span>);</div>
+<div class="line"><a name="l04993"></a><span class="lineno"> 4993</span>&#160; stbi__get32le(s); <span class="comment">// discard filesize</span></div>
+<div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>&#160; stbi__get16le(s); <span class="comment">// discard reserved</span></div>
+<div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>&#160; stbi__get16le(s); <span class="comment">// discard reserved</span></div>
+<div class="line"><a name="l04996"></a><span class="lineno"> 4996</span>&#160; info-&gt;offset = stbi__get32le(s);</div>
+<div class="line"><a name="l04997"></a><span class="lineno"> 4997</span>&#160; info-&gt;hsz = hsz = stbi__get32le(s);</div>
+<div class="line"><a name="l04998"></a><span class="lineno"> 4998</span>&#160; info-&gt;mr = info-&gt;mg = info-&gt;mb = info-&gt;ma = 0;</div>
+<div class="line"><a name="l04999"></a><span class="lineno"> 4999</span>&#160;</div>
+<div class="line"><a name="l05000"></a><span class="lineno"> 5000</span>&#160; <span class="keywordflow">if</span> (hsz != 12 &amp;&amp; hsz != 40 &amp;&amp; hsz != 56 &amp;&amp; hsz != 108 &amp;&amp; hsz != 124) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;unknown BMP&quot;</span>, <span class="stringliteral">&quot;BMP type not supported: unknown&quot;</span>);</div>
+<div class="line"><a name="l05001"></a><span class="lineno"> 5001</span>&#160; <span class="keywordflow">if</span> (hsz == 12) {</div>
+<div class="line"><a name="l05002"></a><span class="lineno"> 5002</span>&#160; s-&gt;img_x = stbi__get16le(s);</div>
+<div class="line"><a name="l05003"></a><span class="lineno"> 5003</span>&#160; s-&gt;img_y = stbi__get16le(s);</div>
+<div class="line"><a name="l05004"></a><span class="lineno"> 5004</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05005"></a><span class="lineno"> 5005</span>&#160; s-&gt;img_x = stbi__get32le(s);</div>
+<div class="line"><a name="l05006"></a><span class="lineno"> 5006</span>&#160; s-&gt;img_y = stbi__get32le(s);</div>
+<div class="line"><a name="l05007"></a><span class="lineno"> 5007</span>&#160; }</div>
+<div class="line"><a name="l05008"></a><span class="lineno"> 5008</span>&#160; <span class="keywordflow">if</span> (stbi__get16le(s) != 1) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad BMP&quot;</span>, <span class="stringliteral">&quot;bad BMP&quot;</span>);</div>
+<div class="line"><a name="l05009"></a><span class="lineno"> 5009</span>&#160; info-&gt;bpp = stbi__get16le(s);</div>
+<div class="line"><a name="l05010"></a><span class="lineno"> 5010</span>&#160; <span class="keywordflow">if</span> (info-&gt;bpp == 1) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;monochrome&quot;</span>, <span class="stringliteral">&quot;BMP type not supported: 1-bit&quot;</span>);</div>
+<div class="line"><a name="l05011"></a><span class="lineno"> 5011</span>&#160; <span class="keywordflow">if</span> (hsz != 12) {</div>
+<div class="line"><a name="l05012"></a><span class="lineno"> 5012</span>&#160; <span class="keywordtype">int</span> compress = stbi__get32le(s);</div>
+<div class="line"><a name="l05013"></a><span class="lineno"> 5013</span>&#160; <span class="keywordflow">if</span> (compress == 1 || compress == 2) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;BMP RLE&quot;</span>, <span class="stringliteral">&quot;BMP type not supported: RLE&quot;</span>);</div>
+<div class="line"><a name="l05014"></a><span class="lineno"> 5014</span>&#160; stbi__get32le(s); <span class="comment">// discard sizeof</span></div>
+<div class="line"><a name="l05015"></a><span class="lineno"> 5015</span>&#160; stbi__get32le(s); <span class="comment">// discard hres</span></div>
+<div class="line"><a name="l05016"></a><span class="lineno"> 5016</span>&#160; stbi__get32le(s); <span class="comment">// discard vres</span></div>
+<div class="line"><a name="l05017"></a><span class="lineno"> 5017</span>&#160; stbi__get32le(s); <span class="comment">// discard colorsused</span></div>
+<div class="line"><a name="l05018"></a><span class="lineno"> 5018</span>&#160; stbi__get32le(s); <span class="comment">// discard max important</span></div>
+<div class="line"><a name="l05019"></a><span class="lineno"> 5019</span>&#160; <span class="keywordflow">if</span> (hsz == 40 || hsz == 56) {</div>
+<div class="line"><a name="l05020"></a><span class="lineno"> 5020</span>&#160; <span class="keywordflow">if</span> (hsz == 56) {</div>
+<div class="line"><a name="l05021"></a><span class="lineno"> 5021</span>&#160; stbi__get32le(s);</div>
+<div class="line"><a name="l05022"></a><span class="lineno"> 5022</span>&#160; stbi__get32le(s);</div>
+<div class="line"><a name="l05023"></a><span class="lineno"> 5023</span>&#160; stbi__get32le(s);</div>
+<div class="line"><a name="l05024"></a><span class="lineno"> 5024</span>&#160; stbi__get32le(s);</div>
+<div class="line"><a name="l05025"></a><span class="lineno"> 5025</span>&#160; }</div>
+<div class="line"><a name="l05026"></a><span class="lineno"> 5026</span>&#160; <span class="keywordflow">if</span> (info-&gt;bpp == 16 || info-&gt;bpp == 32) {</div>
+<div class="line"><a name="l05027"></a><span class="lineno"> 5027</span>&#160; <span class="keywordflow">if</span> (compress == 0) {</div>
+<div class="line"><a name="l05028"></a><span class="lineno"> 5028</span>&#160; <span class="keywordflow">if</span> (info-&gt;bpp == 32) {</div>
+<div class="line"><a name="l05029"></a><span class="lineno"> 5029</span>&#160; info-&gt;mr = 0xffu &lt;&lt; 16;</div>
+<div class="line"><a name="l05030"></a><span class="lineno"> 5030</span>&#160; info-&gt;mg = 0xffu &lt;&lt; 8;</div>
+<div class="line"><a name="l05031"></a><span class="lineno"> 5031</span>&#160; info-&gt;mb = 0xffu &lt;&lt; 0;</div>
+<div class="line"><a name="l05032"></a><span class="lineno"> 5032</span>&#160; info-&gt;ma = 0xffu &lt;&lt; 24;</div>
+<div class="line"><a name="l05033"></a><span class="lineno"> 5033</span>&#160; info-&gt;all_a = 0; <span class="comment">// if all_a is 0 at end, then we loaded alpha channel but it was all 0</span></div>
+<div class="line"><a name="l05034"></a><span class="lineno"> 5034</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05035"></a><span class="lineno"> 5035</span>&#160; info-&gt;mr = 31u &lt;&lt; 10;</div>
+<div class="line"><a name="l05036"></a><span class="lineno"> 5036</span>&#160; info-&gt;mg = 31u &lt;&lt; 5;</div>
+<div class="line"><a name="l05037"></a><span class="lineno"> 5037</span>&#160; info-&gt;mb = 31u &lt;&lt; 0;</div>
+<div class="line"><a name="l05038"></a><span class="lineno"> 5038</span>&#160; }</div>
+<div class="line"><a name="l05039"></a><span class="lineno"> 5039</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (compress == 3) {</div>
+<div class="line"><a name="l05040"></a><span class="lineno"> 5040</span>&#160; info-&gt;mr = stbi__get32le(s);</div>
+<div class="line"><a name="l05041"></a><span class="lineno"> 5041</span>&#160; info-&gt;mg = stbi__get32le(s);</div>
+<div class="line"><a name="l05042"></a><span class="lineno"> 5042</span>&#160; info-&gt;mb = stbi__get32le(s);</div>
+<div class="line"><a name="l05043"></a><span class="lineno"> 5043</span>&#160; <span class="comment">// not documented, but generated by photoshop and handled by mspaint</span></div>
+<div class="line"><a name="l05044"></a><span class="lineno"> 5044</span>&#160; <span class="keywordflow">if</span> (info-&gt;mr == info-&gt;mg &amp;&amp; info-&gt;mg == info-&gt;mb) {</div>
+<div class="line"><a name="l05045"></a><span class="lineno"> 5045</span>&#160; <span class="comment">// ?!?!?</span></div>
+<div class="line"><a name="l05046"></a><span class="lineno"> 5046</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad BMP&quot;</span>, <span class="stringliteral">&quot;bad BMP&quot;</span>);</div>
+<div class="line"><a name="l05047"></a><span class="lineno"> 5047</span>&#160; }</div>
+<div class="line"><a name="l05048"></a><span class="lineno"> 5048</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05049"></a><span class="lineno"> 5049</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad BMP&quot;</span>, <span class="stringliteral">&quot;bad BMP&quot;</span>);</div>
+<div class="line"><a name="l05050"></a><span class="lineno"> 5050</span>&#160; }</div>
+<div class="line"><a name="l05051"></a><span class="lineno"> 5051</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05052"></a><span class="lineno"> 5052</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l05053"></a><span class="lineno"> 5053</span>&#160; <span class="keywordflow">if</span> (hsz != 108 &amp;&amp; hsz != 124)</div>
+<div class="line"><a name="l05054"></a><span class="lineno"> 5054</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad BMP&quot;</span>, <span class="stringliteral">&quot;bad BMP&quot;</span>);</div>
+<div class="line"><a name="l05055"></a><span class="lineno"> 5055</span>&#160; info-&gt;mr = stbi__get32le(s);</div>
+<div class="line"><a name="l05056"></a><span class="lineno"> 5056</span>&#160; info-&gt;mg = stbi__get32le(s);</div>
+<div class="line"><a name="l05057"></a><span class="lineno"> 5057</span>&#160; info-&gt;mb = stbi__get32le(s);</div>
+<div class="line"><a name="l05058"></a><span class="lineno"> 5058</span>&#160; info-&gt;ma = stbi__get32le(s);</div>
+<div class="line"><a name="l05059"></a><span class="lineno"> 5059</span>&#160; stbi__get32le(s); <span class="comment">// discard color space</span></div>
+<div class="line"><a name="l05060"></a><span class="lineno"> 5060</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; 12; ++i)</div>
+<div class="line"><a name="l05061"></a><span class="lineno"> 5061</span>&#160; stbi__get32le(s); <span class="comment">// discard color space parameters</span></div>
+<div class="line"><a name="l05062"></a><span class="lineno"> 5062</span>&#160; <span class="keywordflow">if</span> (hsz == 124) {</div>
+<div class="line"><a name="l05063"></a><span class="lineno"> 5063</span>&#160; stbi__get32le(s); <span class="comment">// discard rendering intent</span></div>
+<div class="line"><a name="l05064"></a><span class="lineno"> 5064</span>&#160; stbi__get32le(s); <span class="comment">// discard offset of profile data</span></div>
+<div class="line"><a name="l05065"></a><span class="lineno"> 5065</span>&#160; stbi__get32le(s); <span class="comment">// discard size of profile data</span></div>
+<div class="line"><a name="l05066"></a><span class="lineno"> 5066</span>&#160; stbi__get32le(s); <span class="comment">// discard reserved</span></div>
+<div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>&#160; }</div>
+<div class="line"><a name="l05068"></a><span class="lineno"> 5068</span>&#160; }</div>
+<div class="line"><a name="l05069"></a><span class="lineno"> 5069</span>&#160; }</div>
+<div class="line"><a name="l05070"></a><span class="lineno"> 5070</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">void</span> *) 1;</div>
+<div class="line"><a name="l05071"></a><span class="lineno"> 5071</span>&#160;}</div>
+<div class="line"><a name="l05072"></a><span class="lineno"> 5072</span>&#160;</div>
+<div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>&#160;</div>
+<div class="line"><a name="l05074"></a><span class="lineno"> 5074</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__bmp_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l05075"></a><span class="lineno"> 5075</span>&#160;{</div>
+<div class="line"><a name="l05076"></a><span class="lineno"> 5076</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out;</div>
+<div class="line"><a name="l05077"></a><span class="lineno"> 5077</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mr=0,mg=0,mb=0,ma=0, all_a;</div>
+<div class="line"><a name="l05078"></a><span class="lineno"> 5078</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> pal[256][4];</div>
+<div class="line"><a name="l05079"></a><span class="lineno"> 5079</span>&#160; <span class="keywordtype">int</span> psize=0,i,j,width;</div>
+<div class="line"><a name="l05080"></a><span class="lineno"> 5080</span>&#160; <span class="keywordtype">int</span> flip_vertically, pad, target;</div>
+<div class="line"><a name="l05081"></a><span class="lineno"> 5081</span>&#160; stbi__bmp_data info;</div>
+<div class="line"><a name="l05082"></a><span class="lineno"> 5082</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l05083"></a><span class="lineno"> 5083</span>&#160;</div>
+<div class="line"><a name="l05084"></a><span class="lineno"> 5084</span>&#160; info.all_a = 255;</div>
+<div class="line"><a name="l05085"></a><span class="lineno"> 5085</span>&#160; <span class="keywordflow">if</span> (stbi__bmp_parse_header(s, &amp;info) == NULL)</div>
+<div class="line"><a name="l05086"></a><span class="lineno"> 5086</span>&#160; <span class="keywordflow">return</span> NULL; <span class="comment">// error code already set</span></div>
+<div class="line"><a name="l05087"></a><span class="lineno"> 5087</span>&#160;</div>
+<div class="line"><a name="l05088"></a><span class="lineno"> 5088</span>&#160; flip_vertically = ((int) s-&gt;img_y) &gt; 0;</div>
+<div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>&#160; s-&gt;img_y = abs((<span class="keywordtype">int</span>) s-&gt;img_y);</div>
+<div class="line"><a name="l05090"></a><span class="lineno"> 5090</span>&#160;</div>
+<div class="line"><a name="l05091"></a><span class="lineno"> 5091</span>&#160; mr = info.mr;</div>
+<div class="line"><a name="l05092"></a><span class="lineno"> 5092</span>&#160; mg = info.mg;</div>
+<div class="line"><a name="l05093"></a><span class="lineno"> 5093</span>&#160; mb = info.mb;</div>
+<div class="line"><a name="l05094"></a><span class="lineno"> 5094</span>&#160; ma = info.ma;</div>
+<div class="line"><a name="l05095"></a><span class="lineno"> 5095</span>&#160; all_a = info.all_a;</div>
+<div class="line"><a name="l05096"></a><span class="lineno"> 5096</span>&#160;</div>
+<div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>&#160; <span class="keywordflow">if</span> (info.hsz == 12) {</div>
+<div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>&#160; <span class="keywordflow">if</span> (info.bpp &lt; 24)</div>
+<div class="line"><a name="l05099"></a><span class="lineno"> 5099</span>&#160; psize = (info.offset - 14 - 24) / 3;</div>
+<div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>&#160; <span class="keywordflow">if</span> (info.bpp &lt; 16)</div>
+<div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>&#160; psize = (info.offset - 14 - info.hsz) &gt;&gt; 2;</div>
+<div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>&#160; }</div>
+<div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>&#160;</div>
+<div class="line"><a name="l05105"></a><span class="lineno"> 5105</span>&#160; s-&gt;img_n = ma ? 4 : 3;</div>
+<div class="line"><a name="l05106"></a><span class="lineno"> 5106</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp &gt;= 3) <span class="comment">// we can directly decode 3 or 4</span></div>
+<div class="line"><a name="l05107"></a><span class="lineno"> 5107</span>&#160; target = req_comp;</div>
+<div class="line"><a name="l05108"></a><span class="lineno"> 5108</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05109"></a><span class="lineno"> 5109</span>&#160; target = s-&gt;img_n; <span class="comment">// if they want monochrome, we&#39;ll post-convert</span></div>
+<div class="line"><a name="l05110"></a><span class="lineno"> 5110</span>&#160;</div>
+<div class="line"><a name="l05111"></a><span class="lineno"> 5111</span>&#160; <span class="comment">// sanity-check size</span></div>
+<div class="line"><a name="l05112"></a><span class="lineno"> 5112</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(target, s-&gt;img_x, s-&gt;img_y, 0))</div>
+<div class="line"><a name="l05113"></a><span class="lineno"> 5113</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;Corrupt BMP&quot;</span>);</div>
+<div class="line"><a name="l05114"></a><span class="lineno"> 5114</span>&#160;</div>
+<div class="line"><a name="l05115"></a><span class="lineno"> 5115</span>&#160; out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(target, s-&gt;img_x, s-&gt;img_y, 0);</div>
+<div class="line"><a name="l05116"></a><span class="lineno"> 5116</span>&#160; <span class="keywordflow">if</span> (!out) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l05117"></a><span class="lineno"> 5117</span>&#160; <span class="keywordflow">if</span> (info.bpp &lt; 16) {</div>
+<div class="line"><a name="l05118"></a><span class="lineno"> 5118</span>&#160; <span class="keywordtype">int</span> z=0;</div>
+<div class="line"><a name="l05119"></a><span class="lineno"> 5119</span>&#160; <span class="keywordflow">if</span> (psize == 0 || psize &gt; 256) { STBI_FREE(out); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;invalid&quot;</span>, <span class="stringliteral">&quot;Corrupt BMP&quot;</span>); }</div>
+<div class="line"><a name="l05120"></a><span class="lineno"> 5120</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; psize; ++i) {</div>
+<div class="line"><a name="l05121"></a><span class="lineno"> 5121</span>&#160; pal[i][2] = stbi__get8(s);</div>
+<div class="line"><a name="l05122"></a><span class="lineno"> 5122</span>&#160; pal[i][1] = stbi__get8(s);</div>
+<div class="line"><a name="l05123"></a><span class="lineno"> 5123</span>&#160; pal[i][0] = stbi__get8(s);</div>
+<div class="line"><a name="l05124"></a><span class="lineno"> 5124</span>&#160; <span class="keywordflow">if</span> (info.hsz != 12) stbi__get8(s);</div>
+<div class="line"><a name="l05125"></a><span class="lineno"> 5125</span>&#160; pal[i][3] = 255;</div>
+<div class="line"><a name="l05126"></a><span class="lineno"> 5126</span>&#160; }</div>
+<div class="line"><a name="l05127"></a><span class="lineno"> 5127</span>&#160; stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4));</div>
+<div class="line"><a name="l05128"></a><span class="lineno"> 5128</span>&#160; <span class="keywordflow">if</span> (info.bpp == 4) width = (s-&gt;img_x + 1) &gt;&gt; 1;</div>
+<div class="line"><a name="l05129"></a><span class="lineno"> 5129</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.bpp == 8) width = s-&gt;img_x;</div>
+<div class="line"><a name="l05130"></a><span class="lineno"> 5130</span>&#160; <span class="keywordflow">else</span> { STBI_FREE(out); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad bpp&quot;</span>, <span class="stringliteral">&quot;Corrupt BMP&quot;</span>); }</div>
+<div class="line"><a name="l05131"></a><span class="lineno"> 5131</span>&#160; pad = (-width)&amp;3;</div>
+<div class="line"><a name="l05132"></a><span class="lineno"> 5132</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; (int) s-&gt;img_y; ++j) {</div>
+<div class="line"><a name="l05133"></a><span class="lineno"> 5133</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; (int) s-&gt;img_x; i += 2) {</div>
+<div class="line"><a name="l05134"></a><span class="lineno"> 5134</span>&#160; <span class="keywordtype">int</span> v=stbi__get8(s),v2=0;</div>
+<div class="line"><a name="l05135"></a><span class="lineno"> 5135</span>&#160; <span class="keywordflow">if</span> (info.bpp == 4) {</div>
+<div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>&#160; v2 = v &amp; 15;</div>
+<div class="line"><a name="l05137"></a><span class="lineno"> 5137</span>&#160; v &gt;&gt;= 4;</div>
+<div class="line"><a name="l05138"></a><span class="lineno"> 5138</span>&#160; }</div>
+<div class="line"><a name="l05139"></a><span class="lineno"> 5139</span>&#160; out[z++] = pal[v][0];</div>
+<div class="line"><a name="l05140"></a><span class="lineno"> 5140</span>&#160; out[z++] = pal[v][1];</div>
+<div class="line"><a name="l05141"></a><span class="lineno"> 5141</span>&#160; out[z++] = pal[v][2];</div>
+<div class="line"><a name="l05142"></a><span class="lineno"> 5142</span>&#160; <span class="keywordflow">if</span> (target == 4) out[z++] = 255;</div>
+<div class="line"><a name="l05143"></a><span class="lineno"> 5143</span>&#160; <span class="keywordflow">if</span> (i+1 == (<span class="keywordtype">int</span>) s-&gt;img_x) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l05144"></a><span class="lineno"> 5144</span>&#160; v = (info.bpp == 8) ? stbi__get8(s) : v2;</div>
+<div class="line"><a name="l05145"></a><span class="lineno"> 5145</span>&#160; out[z++] = pal[v][0];</div>
+<div class="line"><a name="l05146"></a><span class="lineno"> 5146</span>&#160; out[z++] = pal[v][1];</div>
+<div class="line"><a name="l05147"></a><span class="lineno"> 5147</span>&#160; out[z++] = pal[v][2];</div>
+<div class="line"><a name="l05148"></a><span class="lineno"> 5148</span>&#160; <span class="keywordflow">if</span> (target == 4) out[z++] = 255;</div>
+<div class="line"><a name="l05149"></a><span class="lineno"> 5149</span>&#160; }</div>
+<div class="line"><a name="l05150"></a><span class="lineno"> 5150</span>&#160; stbi__skip(s, pad);</div>
+<div class="line"><a name="l05151"></a><span class="lineno"> 5151</span>&#160; }</div>
+<div class="line"><a name="l05152"></a><span class="lineno"> 5152</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05153"></a><span class="lineno"> 5153</span>&#160; <span class="keywordtype">int</span> rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;</div>
+<div class="line"><a name="l05154"></a><span class="lineno"> 5154</span>&#160; <span class="keywordtype">int</span> z = 0;</div>
+<div class="line"><a name="l05155"></a><span class="lineno"> 5155</span>&#160; <span class="keywordtype">int</span> easy=0;</div>
+<div class="line"><a name="l05156"></a><span class="lineno"> 5156</span>&#160; stbi__skip(s, info.offset - 14 - info.hsz);</div>
+<div class="line"><a name="l05157"></a><span class="lineno"> 5157</span>&#160; <span class="keywordflow">if</span> (info.bpp == 24) width = 3 * s-&gt;img_x;</div>
+<div class="line"><a name="l05158"></a><span class="lineno"> 5158</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.bpp == 16) width = 2*s-&gt;img_x;</div>
+<div class="line"><a name="l05159"></a><span class="lineno"> 5159</span>&#160; <span class="keywordflow">else</span> <span class="comment">/* bpp = 32 and pad = 0 */</span> width=0;</div>
+<div class="line"><a name="l05160"></a><span class="lineno"> 5160</span>&#160; pad = (-width) &amp; 3;</div>
+<div class="line"><a name="l05161"></a><span class="lineno"> 5161</span>&#160; <span class="keywordflow">if</span> (info.bpp == 24) {</div>
+<div class="line"><a name="l05162"></a><span class="lineno"> 5162</span>&#160; easy = 1;</div>
+<div class="line"><a name="l05163"></a><span class="lineno"> 5163</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.bpp == 32) {</div>
+<div class="line"><a name="l05164"></a><span class="lineno"> 5164</span>&#160; <span class="keywordflow">if</span> (mb == 0xff &amp;&amp; mg == 0xff00 &amp;&amp; mr == 0x00ff0000 &amp;&amp; ma == 0xff000000)</div>
+<div class="line"><a name="l05165"></a><span class="lineno"> 5165</span>&#160; easy = 2;</div>
+<div class="line"><a name="l05166"></a><span class="lineno"> 5166</span>&#160; }</div>
+<div class="line"><a name="l05167"></a><span class="lineno"> 5167</span>&#160; <span class="keywordflow">if</span> (!easy) {</div>
+<div class="line"><a name="l05168"></a><span class="lineno"> 5168</span>&#160; <span class="keywordflow">if</span> (!mr || !mg || !mb) { STBI_FREE(out); <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad masks&quot;</span>, <span class="stringliteral">&quot;Corrupt BMP&quot;</span>); }</div>
+<div class="line"><a name="l05169"></a><span class="lineno"> 5169</span>&#160; <span class="comment">// right shift amt to put high bit in position #7</span></div>
+<div class="line"><a name="l05170"></a><span class="lineno"> 5170</span>&#160; rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr);</div>
+<div class="line"><a name="l05171"></a><span class="lineno"> 5171</span>&#160; gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg);</div>
+<div class="line"><a name="l05172"></a><span class="lineno"> 5172</span>&#160; bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb);</div>
+<div class="line"><a name="l05173"></a><span class="lineno"> 5173</span>&#160; ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma);</div>
+<div class="line"><a name="l05174"></a><span class="lineno"> 5174</span>&#160; }</div>
+<div class="line"><a name="l05175"></a><span class="lineno"> 5175</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; (int) s-&gt;img_y; ++j) {</div>
+<div class="line"><a name="l05176"></a><span class="lineno"> 5176</span>&#160; <span class="keywordflow">if</span> (easy) {</div>
+<div class="line"><a name="l05177"></a><span class="lineno"> 5177</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; (int) s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l05178"></a><span class="lineno"> 5178</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> a;</div>
+<div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>&#160; out[z+2] = stbi__get8(s);</div>
+<div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>&#160; out[z+1] = stbi__get8(s);</div>
+<div class="line"><a name="l05181"></a><span class="lineno"> 5181</span>&#160; out[z+0] = stbi__get8(s);</div>
+<div class="line"><a name="l05182"></a><span class="lineno"> 5182</span>&#160; z += 3;</div>
+<div class="line"><a name="l05183"></a><span class="lineno"> 5183</span>&#160; a = (easy == 2 ? stbi__get8(s) : 255);</div>
+<div class="line"><a name="l05184"></a><span class="lineno"> 5184</span>&#160; all_a |= a;</div>
+<div class="line"><a name="l05185"></a><span class="lineno"> 5185</span>&#160; <span class="keywordflow">if</span> (target == 4) out[z++] = a;</div>
+<div class="line"><a name="l05186"></a><span class="lineno"> 5186</span>&#160; }</div>
+<div class="line"><a name="l05187"></a><span class="lineno"> 5187</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05188"></a><span class="lineno"> 5188</span>&#160; <span class="keywordtype">int</span> bpp = info.bpp;</div>
+<div class="line"><a name="l05189"></a><span class="lineno"> 5189</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; (int) s-&gt;img_x; ++i) {</div>
+<div class="line"><a name="l05190"></a><span class="lineno"> 5190</span>&#160; stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s));</div>
+<div class="line"><a name="l05191"></a><span class="lineno"> 5191</span>&#160; <span class="keywordtype">int</span> a;</div>
+<div class="line"><a name="l05192"></a><span class="lineno"> 5192</span>&#160; out[z++] = STBI__BYTECAST(stbi__shiftsigned(v &amp; mr, rshift, rcount));</div>
+<div class="line"><a name="l05193"></a><span class="lineno"> 5193</span>&#160; out[z++] = STBI__BYTECAST(stbi__shiftsigned(v &amp; mg, gshift, gcount));</div>
+<div class="line"><a name="l05194"></a><span class="lineno"> 5194</span>&#160; out[z++] = STBI__BYTECAST(stbi__shiftsigned(v &amp; mb, bshift, bcount));</div>
+<div class="line"><a name="l05195"></a><span class="lineno"> 5195</span>&#160; a = (ma ? stbi__shiftsigned(v &amp; ma, ashift, acount) : 255);</div>
+<div class="line"><a name="l05196"></a><span class="lineno"> 5196</span>&#160; all_a |= a;</div>
+<div class="line"><a name="l05197"></a><span class="lineno"> 5197</span>&#160; <span class="keywordflow">if</span> (target == 4) out[z++] = STBI__BYTECAST(a);</div>
+<div class="line"><a name="l05198"></a><span class="lineno"> 5198</span>&#160; }</div>
+<div class="line"><a name="l05199"></a><span class="lineno"> 5199</span>&#160; }</div>
+<div class="line"><a name="l05200"></a><span class="lineno"> 5200</span>&#160; stbi__skip(s, pad);</div>
+<div class="line"><a name="l05201"></a><span class="lineno"> 5201</span>&#160; }</div>
+<div class="line"><a name="l05202"></a><span class="lineno"> 5202</span>&#160; }</div>
+<div class="line"><a name="l05203"></a><span class="lineno"> 5203</span>&#160;</div>
+<div class="line"><a name="l05204"></a><span class="lineno"> 5204</span>&#160; <span class="comment">// if alpha channel is all 0s, replace with all 255s</span></div>
+<div class="line"><a name="l05205"></a><span class="lineno"> 5205</span>&#160; <span class="keywordflow">if</span> (target == 4 &amp;&amp; all_a == 0)</div>
+<div class="line"><a name="l05206"></a><span class="lineno"> 5206</span>&#160; <span class="keywordflow">for</span> (i=4*s-&gt;img_x*s-&gt;img_y-1; i &gt;= 0; i -= 4)</div>
+<div class="line"><a name="l05207"></a><span class="lineno"> 5207</span>&#160; out[i] = 255;</div>
+<div class="line"><a name="l05208"></a><span class="lineno"> 5208</span>&#160;</div>
+<div class="line"><a name="l05209"></a><span class="lineno"> 5209</span>&#160; <span class="keywordflow">if</span> (flip_vertically) {</div>
+<div class="line"><a name="l05210"></a><span class="lineno"> 5210</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> t;</div>
+<div class="line"><a name="l05211"></a><span class="lineno"> 5211</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; (int) s-&gt;img_y&gt;&gt;1; ++j) {</div>
+<div class="line"><a name="l05212"></a><span class="lineno"> 5212</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p1 = out + j *s-&gt;img_x*target;</div>
+<div class="line"><a name="l05213"></a><span class="lineno"> 5213</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p2 = out + (s-&gt;img_y-1-j)*s-&gt;img_x*target;</div>
+<div class="line"><a name="l05214"></a><span class="lineno"> 5214</span>&#160; for (i=0; i &lt; (int) s-&gt;img_x*target; ++i) {</div>
+<div class="line"><a name="l05215"></a><span class="lineno"> 5215</span>&#160; t = p1[i], p1[i] = p2[i], p2[i] = t;</div>
+<div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>&#160; }</div>
+<div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>&#160; }</div>
+<div class="line"><a name="l05218"></a><span class="lineno"> 5218</span>&#160; }</div>
+<div class="line"><a name="l05219"></a><span class="lineno"> 5219</span>&#160;</div>
+<div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != target) {</div>
+<div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>&#160; out = stbi__convert_format(out, target, req_comp, s-&gt;img_x, s-&gt;img_y);</div>
+<div class="line"><a name="l05222"></a><span class="lineno"> 5222</span>&#160; <span class="keywordflow">if</span> (out == NULL) <span class="keywordflow">return</span> out; <span class="comment">// stbi__convert_format frees input on failure</span></div>
+<div class="line"><a name="l05223"></a><span class="lineno"> 5223</span>&#160; }</div>
+<div class="line"><a name="l05224"></a><span class="lineno"> 5224</span>&#160;</div>
+<div class="line"><a name="l05225"></a><span class="lineno"> 5225</span>&#160; *x = s-&gt;img_x;</div>
+<div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>&#160; *y = s-&gt;img_y;</div>
+<div class="line"><a name="l05227"></a><span class="lineno"> 5227</span>&#160; <span class="keywordflow">if</span> (comp) *comp = s-&gt;img_n;</div>
+<div class="line"><a name="l05228"></a><span class="lineno"> 5228</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l05229"></a><span class="lineno"> 5229</span>&#160;}</div>
+<div class="line"><a name="l05230"></a><span class="lineno"> 5230</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l05231"></a><span class="lineno"> 5231</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>&#160;<span class="comment">// Targa Truevision - TGA</span></div>
+<div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>&#160;<span class="comment">// by Jonathan Dummer</span></div>
+<div class="line"><a name="l05234"></a><span class="lineno"> 5234</span>&#160;<span class="preprocessor">#ifndef STBI_NO_TGA</span></div>
+<div class="line"><a name="l05235"></a><span class="lineno"> 5235</span>&#160;<span class="preprocessor"></span><span class="comment">// returns STBI_rgb or whatever, 0 on error</span></div>
+<div class="line"><a name="l05236"></a><span class="lineno"> 5236</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__tga_get_comp(<span class="keywordtype">int</span> bits_per_pixel, <span class="keywordtype">int</span> is_grey, <span class="keywordtype">int</span>* is_rgb16)</div>
+<div class="line"><a name="l05237"></a><span class="lineno"> 5237</span>&#160;{</div>
+<div class="line"><a name="l05238"></a><span class="lineno"> 5238</span>&#160; <span class="comment">// only RGB or RGBA (incl. 16bit) or grey allowed</span></div>
+<div class="line"><a name="l05239"></a><span class="lineno"> 5239</span>&#160; <span class="keywordflow">if</span>(is_rgb16) *is_rgb16 = 0;</div>
+<div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>&#160; <span class="keywordflow">switch</span>(bits_per_pixel) {</div>
+<div class="line"><a name="l05241"></a><span class="lineno"> 5241</span>&#160; <span class="keywordflow">case</span> 8: <span class="keywordflow">return</span> <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">STBI_grey</a>;</div>
+<div class="line"><a name="l05242"></a><span class="lineno"> 5242</span>&#160; <span class="keywordflow">case</span> 16: <span class="keywordflow">if</span>(is_grey) <span class="keywordflow">return</span> <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">STBI_grey_alpha</a>;</div>
+<div class="line"><a name="l05243"></a><span class="lineno"> 5243</span>&#160; <span class="comment">// else: fall-through</span></div>
+<div class="line"><a name="l05244"></a><span class="lineno"> 5244</span>&#160; <span class="keywordflow">case</span> 15: <span class="keywordflow">if</span>(is_rgb16) *is_rgb16 = 1;</div>
+<div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>&#160; <span class="keywordflow">return</span> <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a>;</div>
+<div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>&#160; <span class="keywordflow">case</span> 24: <span class="comment">// fall-through</span></div>
+<div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>&#160; <span class="keywordflow">case</span> 32: <span class="keywordflow">return</span> bits_per_pixel/8;</div>
+<div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>&#160; }</div>
+<div class="line"><a name="l05250"></a><span class="lineno"> 5250</span>&#160;}</div>
+<div class="line"><a name="l05251"></a><span class="lineno"> 5251</span>&#160;</div>
+<div class="line"><a name="l05252"></a><span class="lineno"> 5252</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__tga_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l05253"></a><span class="lineno"> 5253</span>&#160;{</div>
+<div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>&#160; <span class="keywordtype">int</span> tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;</div>
+<div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>&#160; <span class="keywordtype">int</span> sz, tga_colormap_type;</div>
+<div class="line"><a name="l05256"></a><span class="lineno"> 5256</span>&#160; stbi__get8(s); <span class="comment">// discard Offset</span></div>
+<div class="line"><a name="l05257"></a><span class="lineno"> 5257</span>&#160; tga_colormap_type = stbi__get8(s); <span class="comment">// colormap type</span></div>
+<div class="line"><a name="l05258"></a><span class="lineno"> 5258</span>&#160; <span class="keywordflow">if</span>( tga_colormap_type &gt; 1 ) {</div>
+<div class="line"><a name="l05259"></a><span class="lineno"> 5259</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05260"></a><span class="lineno"> 5260</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// only RGB or indexed allowed</span></div>
+<div class="line"><a name="l05261"></a><span class="lineno"> 5261</span>&#160; }</div>
+<div class="line"><a name="l05262"></a><span class="lineno"> 5262</span>&#160; tga_image_type = stbi__get8(s); <span class="comment">// image type</span></div>
+<div class="line"><a name="l05263"></a><span class="lineno"> 5263</span>&#160; <span class="keywordflow">if</span> ( tga_colormap_type == 1 ) { <span class="comment">// colormapped (paletted) image</span></div>
+<div class="line"><a name="l05264"></a><span class="lineno"> 5264</span>&#160; <span class="keywordflow">if</span> (tga_image_type != 1 &amp;&amp; tga_image_type != 9) {</div>
+<div class="line"><a name="l05265"></a><span class="lineno"> 5265</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05266"></a><span class="lineno"> 5266</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05267"></a><span class="lineno"> 5267</span>&#160; }</div>
+<div class="line"><a name="l05268"></a><span class="lineno"> 5268</span>&#160; stbi__skip(s,4); <span class="comment">// skip index of first colormap entry and number of entries</span></div>
+<div class="line"><a name="l05269"></a><span class="lineno"> 5269</span>&#160; sz = stbi__get8(s); <span class="comment">// check bits per palette color entry</span></div>
+<div class="line"><a name="l05270"></a><span class="lineno"> 5270</span>&#160; <span class="keywordflow">if</span> ( (sz != 8) &amp;&amp; (sz != 15) &amp;&amp; (sz != 16) &amp;&amp; (sz != 24) &amp;&amp; (sz != 32) ) {</div>
+<div class="line"><a name="l05271"></a><span class="lineno"> 5271</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05272"></a><span class="lineno"> 5272</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05273"></a><span class="lineno"> 5273</span>&#160; }</div>
+<div class="line"><a name="l05274"></a><span class="lineno"> 5274</span>&#160; stbi__skip(s,4); <span class="comment">// skip image x and y origin</span></div>
+<div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>&#160; tga_colormap_bpp = sz;</div>
+<div class="line"><a name="l05276"></a><span class="lineno"> 5276</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// &quot;normal&quot; image w/o colormap - only RGB or grey allowed, +/- RLE</span></div>
+<div class="line"><a name="l05277"></a><span class="lineno"> 5277</span>&#160; <span class="keywordflow">if</span> ( (tga_image_type != 2) &amp;&amp; (tga_image_type != 3) &amp;&amp; (tga_image_type != 10) &amp;&amp; (tga_image_type != 11) ) {</div>
+<div class="line"><a name="l05278"></a><span class="lineno"> 5278</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05279"></a><span class="lineno"> 5279</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// only RGB or grey allowed, +/- RLE</span></div>
+<div class="line"><a name="l05280"></a><span class="lineno"> 5280</span>&#160; }</div>
+<div class="line"><a name="l05281"></a><span class="lineno"> 5281</span>&#160; stbi__skip(s,9); <span class="comment">// skip colormap specification and image x/y origin</span></div>
+<div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>&#160; tga_colormap_bpp = 0;</div>
+<div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>&#160; }</div>
+<div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>&#160; tga_w = stbi__get16le(s);</div>
+<div class="line"><a name="l05285"></a><span class="lineno"> 5285</span>&#160; <span class="keywordflow">if</span>( tga_w &lt; 1 ) {</div>
+<div class="line"><a name="l05286"></a><span class="lineno"> 5286</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05287"></a><span class="lineno"> 5287</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// test width</span></div>
+<div class="line"><a name="l05288"></a><span class="lineno"> 5288</span>&#160; }</div>
+<div class="line"><a name="l05289"></a><span class="lineno"> 5289</span>&#160; tga_h = stbi__get16le(s);</div>
+<div class="line"><a name="l05290"></a><span class="lineno"> 5290</span>&#160; <span class="keywordflow">if</span>( tga_h &lt; 1 ) {</div>
+<div class="line"><a name="l05291"></a><span class="lineno"> 5291</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05292"></a><span class="lineno"> 5292</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// test height</span></div>
+<div class="line"><a name="l05293"></a><span class="lineno"> 5293</span>&#160; }</div>
+<div class="line"><a name="l05294"></a><span class="lineno"> 5294</span>&#160; tga_bits_per_pixel = stbi__get8(s); <span class="comment">// bits per pixel</span></div>
+<div class="line"><a name="l05295"></a><span class="lineno"> 5295</span>&#160; stbi__get8(s); <span class="comment">// ignore alpha bits</span></div>
+<div class="line"><a name="l05296"></a><span class="lineno"> 5296</span>&#160; <span class="keywordflow">if</span> (tga_colormap_bpp != 0) {</div>
+<div class="line"><a name="l05297"></a><span class="lineno"> 5297</span>&#160; <span class="keywordflow">if</span>((tga_bits_per_pixel != 8) &amp;&amp; (tga_bits_per_pixel != 16)) {</div>
+<div class="line"><a name="l05298"></a><span class="lineno"> 5298</span>&#160; <span class="comment">// when using a colormap, tga_bits_per_pixel is the size of the indexes</span></div>
+<div class="line"><a name="l05299"></a><span class="lineno"> 5299</span>&#160; <span class="comment">// I don&#39;t think anything but 8 or 16bit indexes makes sense</span></div>
+<div class="line"><a name="l05300"></a><span class="lineno"> 5300</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05301"></a><span class="lineno"> 5301</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05302"></a><span class="lineno"> 5302</span>&#160; }</div>
+<div class="line"><a name="l05303"></a><span class="lineno"> 5303</span>&#160; tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);</div>
+<div class="line"><a name="l05304"></a><span class="lineno"> 5304</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05305"></a><span class="lineno"> 5305</span>&#160; tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);</div>
+<div class="line"><a name="l05306"></a><span class="lineno"> 5306</span>&#160; }</div>
+<div class="line"><a name="l05307"></a><span class="lineno"> 5307</span>&#160; <span class="keywordflow">if</span>(!tga_comp) {</div>
+<div class="line"><a name="l05308"></a><span class="lineno"> 5308</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05309"></a><span class="lineno"> 5309</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05310"></a><span class="lineno"> 5310</span>&#160; }</div>
+<div class="line"><a name="l05311"></a><span class="lineno"> 5311</span>&#160; <span class="keywordflow">if</span> (x) *x = tga_w;</div>
+<div class="line"><a name="l05312"></a><span class="lineno"> 5312</span>&#160; <span class="keywordflow">if</span> (y) *y = tga_h;</div>
+<div class="line"><a name="l05313"></a><span class="lineno"> 5313</span>&#160; <span class="keywordflow">if</span> (comp) *comp = tga_comp;</div>
+<div class="line"><a name="l05314"></a><span class="lineno"> 5314</span>&#160; <span class="keywordflow">return</span> 1; <span class="comment">// seems to have passed everything</span></div>
+<div class="line"><a name="l05315"></a><span class="lineno"> 5315</span>&#160;}</div>
+<div class="line"><a name="l05316"></a><span class="lineno"> 5316</span>&#160;</div>
+<div class="line"><a name="l05317"></a><span class="lineno"> 5317</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__tga_test(stbi__context *s)</div>
+<div class="line"><a name="l05318"></a><span class="lineno"> 5318</span>&#160;{</div>
+<div class="line"><a name="l05319"></a><span class="lineno"> 5319</span>&#160; <span class="keywordtype">int</span> res = 0;</div>
+<div class="line"><a name="l05320"></a><span class="lineno"> 5320</span>&#160; <span class="keywordtype">int</span> sz, tga_color_type;</div>
+<div class="line"><a name="l05321"></a><span class="lineno"> 5321</span>&#160; stbi__get8(s); <span class="comment">// discard Offset</span></div>
+<div class="line"><a name="l05322"></a><span class="lineno"> 5322</span>&#160; tga_color_type = stbi__get8(s); <span class="comment">// color type</span></div>
+<div class="line"><a name="l05323"></a><span class="lineno"> 5323</span>&#160; <span class="keywordflow">if</span> ( tga_color_type &gt; 1 ) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// only RGB or indexed allowed</span></div>
+<div class="line"><a name="l05324"></a><span class="lineno"> 5324</span>&#160; sz = stbi__get8(s); <span class="comment">// image type</span></div>
+<div class="line"><a name="l05325"></a><span class="lineno"> 5325</span>&#160; <span class="keywordflow">if</span> ( tga_color_type == 1 ) { <span class="comment">// colormapped (paletted) image</span></div>
+<div class="line"><a name="l05326"></a><span class="lineno"> 5326</span>&#160; <span class="keywordflow">if</span> (sz != 1 &amp;&amp; sz != 9) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// colortype 1 demands image type 1 or 9</span></div>
+<div class="line"><a name="l05327"></a><span class="lineno"> 5327</span>&#160; stbi__skip(s,4); <span class="comment">// skip index of first colormap entry and number of entries</span></div>
+<div class="line"><a name="l05328"></a><span class="lineno"> 5328</span>&#160; sz = stbi__get8(s); <span class="comment">// check bits per palette color entry</span></div>
+<div class="line"><a name="l05329"></a><span class="lineno"> 5329</span>&#160; <span class="keywordflow">if</span> ( (sz != 8) &amp;&amp; (sz != 15) &amp;&amp; (sz != 16) &amp;&amp; (sz != 24) &amp;&amp; (sz != 32) ) <span class="keywordflow">goto</span> errorEnd;</div>
+<div class="line"><a name="l05330"></a><span class="lineno"> 5330</span>&#160; stbi__skip(s,4); <span class="comment">// skip image x and y origin</span></div>
+<div class="line"><a name="l05331"></a><span class="lineno"> 5331</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// &quot;normal&quot; image w/o colormap</span></div>
+<div class="line"><a name="l05332"></a><span class="lineno"> 5332</span>&#160; <span class="keywordflow">if</span> ( (sz != 2) &amp;&amp; (sz != 3) &amp;&amp; (sz != 10) &amp;&amp; (sz != 11) ) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// only RGB or grey allowed, +/- RLE</span></div>
+<div class="line"><a name="l05333"></a><span class="lineno"> 5333</span>&#160; stbi__skip(s,9); <span class="comment">// skip colormap specification and image x/y origin</span></div>
+<div class="line"><a name="l05334"></a><span class="lineno"> 5334</span>&#160; }</div>
+<div class="line"><a name="l05335"></a><span class="lineno"> 5335</span>&#160; <span class="keywordflow">if</span> ( stbi__get16le(s) &lt; 1 ) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// test width</span></div>
+<div class="line"><a name="l05336"></a><span class="lineno"> 5336</span>&#160; <span class="keywordflow">if</span> ( stbi__get16le(s) &lt; 1 ) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// test height</span></div>
+<div class="line"><a name="l05337"></a><span class="lineno"> 5337</span>&#160; sz = stbi__get8(s); <span class="comment">// bits per pixel</span></div>
+<div class="line"><a name="l05338"></a><span class="lineno"> 5338</span>&#160; <span class="keywordflow">if</span> ( (tga_color_type == 1) &amp;&amp; (sz != 8) &amp;&amp; (sz != 16) ) <span class="keywordflow">goto</span> errorEnd; <span class="comment">// for colormapped images, bpp is size of an index</span></div>
+<div class="line"><a name="l05339"></a><span class="lineno"> 5339</span>&#160; <span class="keywordflow">if</span> ( (sz != 8) &amp;&amp; (sz != 15) &amp;&amp; (sz != 16) &amp;&amp; (sz != 24) &amp;&amp; (sz != 32) ) <span class="keywordflow">goto</span> errorEnd;</div>
+<div class="line"><a name="l05340"></a><span class="lineno"> 5340</span>&#160;</div>
+<div class="line"><a name="l05341"></a><span class="lineno"> 5341</span>&#160; res = 1; <span class="comment">// if we got this far, everything&#39;s good and we can return 1 instead of 0</span></div>
+<div class="line"><a name="l05342"></a><span class="lineno"> 5342</span>&#160;</div>
+<div class="line"><a name="l05343"></a><span class="lineno"> 5343</span>&#160;errorEnd:</div>
+<div class="line"><a name="l05344"></a><span class="lineno"> 5344</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05345"></a><span class="lineno"> 5345</span>&#160; <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l05346"></a><span class="lineno"> 5346</span>&#160;}</div>
+<div class="line"><a name="l05347"></a><span class="lineno"> 5347</span>&#160;</div>
+<div class="line"><a name="l05348"></a><span class="lineno"> 5348</span>&#160;<span class="comment">// read 16bit value and convert to 24bit RGB</span></div>
+<div class="line"><a name="l05349"></a><span class="lineno"> 5349</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__tga_read_rgb16(stbi__context *s, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>* out)</div>
+<div class="line"><a name="l05350"></a><span class="lineno"> 5350</span>&#160;{</div>
+<div class="line"><a name="l05351"></a><span class="lineno"> 5351</span>&#160; stbi__uint16 px = (stbi__uint16)stbi__get16le(s);</div>
+<div class="line"><a name="l05352"></a><span class="lineno"> 5352</span>&#160; stbi__uint16 fiveBitMask = 31;</div>
+<div class="line"><a name="l05353"></a><span class="lineno"> 5353</span>&#160; <span class="comment">// we have 3 channels with 5bits each</span></div>
+<div class="line"><a name="l05354"></a><span class="lineno"> 5354</span>&#160; <span class="keywordtype">int</span> r = (px &gt;&gt; 10) &amp; fiveBitMask;</div>
+<div class="line"><a name="l05355"></a><span class="lineno"> 5355</span>&#160; <span class="keywordtype">int</span> g = (px &gt;&gt; 5) &amp; fiveBitMask;</div>
+<div class="line"><a name="l05356"></a><span class="lineno"> 5356</span>&#160; <span class="keywordtype">int</span> b = px &amp; fiveBitMask;</div>
+<div class="line"><a name="l05357"></a><span class="lineno"> 5357</span>&#160; <span class="comment">// Note that this saves the data in RGB(A) order, so it doesn&#39;t need to be swapped later</span></div>
+<div class="line"><a name="l05358"></a><span class="lineno"> 5358</span>&#160; out[0] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)((r * 255)/31);</div>
+<div class="line"><a name="l05359"></a><span class="lineno"> 5359</span>&#160; out[1] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)((g * 255)/31);</div>
+<div class="line"><a name="l05360"></a><span class="lineno"> 5360</span>&#160; out[2] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)((b * 255)/31);</div>
+<div class="line"><a name="l05361"></a><span class="lineno"> 5361</span>&#160;</div>
+<div class="line"><a name="l05362"></a><span class="lineno"> 5362</span>&#160; <span class="comment">// some people claim that the most significant bit might be used for alpha</span></div>
+<div class="line"><a name="l05363"></a><span class="lineno"> 5363</span>&#160; <span class="comment">// (possibly if an alpha-bit is set in the &quot;image descriptor byte&quot;)</span></div>
+<div class="line"><a name="l05364"></a><span class="lineno"> 5364</span>&#160; <span class="comment">// but that only made 16bit test images completely translucent..</span></div>
+<div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>&#160; <span class="comment">// so let&#39;s treat all 15 and 16bit TGAs as RGB with no alpha.</span></div>
+<div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>&#160;}</div>
+<div class="line"><a name="l05367"></a><span class="lineno"> 5367</span>&#160;</div>
+<div class="line"><a name="l05368"></a><span class="lineno"> 5368</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__tga_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l05369"></a><span class="lineno"> 5369</span>&#160;{</div>
+<div class="line"><a name="l05370"></a><span class="lineno"> 5370</span>&#160; <span class="comment">// read in the TGA header stuff</span></div>
+<div class="line"><a name="l05371"></a><span class="lineno"> 5371</span>&#160; <span class="keywordtype">int</span> tga_offset = stbi__get8(s);</div>
+<div class="line"><a name="l05372"></a><span class="lineno"> 5372</span>&#160; <span class="keywordtype">int</span> tga_indexed = stbi__get8(s);</div>
+<div class="line"><a name="l05373"></a><span class="lineno"> 5373</span>&#160; <span class="keywordtype">int</span> tga_image_type = stbi__get8(s);</div>
+<div class="line"><a name="l05374"></a><span class="lineno"> 5374</span>&#160; <span class="keywordtype">int</span> tga_is_RLE = 0;</div>
+<div class="line"><a name="l05375"></a><span class="lineno"> 5375</span>&#160; <span class="keywordtype">int</span> tga_palette_start = stbi__get16le(s);</div>
+<div class="line"><a name="l05376"></a><span class="lineno"> 5376</span>&#160; <span class="keywordtype">int</span> tga_palette_len = stbi__get16le(s);</div>
+<div class="line"><a name="l05377"></a><span class="lineno"> 5377</span>&#160; <span class="keywordtype">int</span> tga_palette_bits = stbi__get8(s);</div>
+<div class="line"><a name="l05378"></a><span class="lineno"> 5378</span>&#160; <span class="keywordtype">int</span> tga_x_origin = stbi__get16le(s);</div>
+<div class="line"><a name="l05379"></a><span class="lineno"> 5379</span>&#160; <span class="keywordtype">int</span> tga_y_origin = stbi__get16le(s);</div>
+<div class="line"><a name="l05380"></a><span class="lineno"> 5380</span>&#160; <span class="keywordtype">int</span> tga_width = stbi__get16le(s);</div>
+<div class="line"><a name="l05381"></a><span class="lineno"> 5381</span>&#160; <span class="keywordtype">int</span> tga_height = stbi__get16le(s);</div>
+<div class="line"><a name="l05382"></a><span class="lineno"> 5382</span>&#160; <span class="keywordtype">int</span> tga_bits_per_pixel = stbi__get8(s);</div>
+<div class="line"><a name="l05383"></a><span class="lineno"> 5383</span>&#160; <span class="keywordtype">int</span> tga_comp, tga_rgb16=0;</div>
+<div class="line"><a name="l05384"></a><span class="lineno"> 5384</span>&#160; <span class="keywordtype">int</span> tga_inverted = stbi__get8(s);</div>
+<div class="line"><a name="l05385"></a><span class="lineno"> 5385</span>&#160; <span class="comment">// int tga_alpha_bits = tga_inverted &amp; 15; // the 4 lowest bits - unused (useless?)</span></div>
+<div class="line"><a name="l05386"></a><span class="lineno"> 5386</span>&#160; <span class="comment">// image data</span></div>
+<div class="line"><a name="l05387"></a><span class="lineno"> 5387</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *tga_data;</div>
+<div class="line"><a name="l05388"></a><span class="lineno"> 5388</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *tga_palette = NULL;</div>
+<div class="line"><a name="l05389"></a><span class="lineno"> 5389</span>&#160; <span class="keywordtype">int</span> i, j;</div>
+<div class="line"><a name="l05390"></a><span class="lineno"> 5390</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> raw_data[4] = {0};</div>
+<div class="line"><a name="l05391"></a><span class="lineno"> 5391</span>&#160; <span class="keywordtype">int</span> RLE_count = 0;</div>
+<div class="line"><a name="l05392"></a><span class="lineno"> 5392</span>&#160; <span class="keywordtype">int</span> RLE_repeating = 0;</div>
+<div class="line"><a name="l05393"></a><span class="lineno"> 5393</span>&#160; <span class="keywordtype">int</span> read_next_pixel = 1;</div>
+<div class="line"><a name="l05394"></a><span class="lineno"> 5394</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l05395"></a><span class="lineno"> 5395</span>&#160;</div>
+<div class="line"><a name="l05396"></a><span class="lineno"> 5396</span>&#160; <span class="comment">// do a tiny bit of precessing</span></div>
+<div class="line"><a name="l05397"></a><span class="lineno"> 5397</span>&#160; <span class="keywordflow">if</span> ( tga_image_type &gt;= 8 )</div>
+<div class="line"><a name="l05398"></a><span class="lineno"> 5398</span>&#160; {</div>
+<div class="line"><a name="l05399"></a><span class="lineno"> 5399</span>&#160; tga_image_type -= 8;</div>
+<div class="line"><a name="l05400"></a><span class="lineno"> 5400</span>&#160; tga_is_RLE = 1;</div>
+<div class="line"><a name="l05401"></a><span class="lineno"> 5401</span>&#160; }</div>
+<div class="line"><a name="l05402"></a><span class="lineno"> 5402</span>&#160; tga_inverted = 1 - ((tga_inverted &gt;&gt; 5) &amp; 1);</div>
+<div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>&#160;</div>
+<div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>&#160; <span class="comment">// If I&#39;m paletted, then I&#39;ll use the number of bits from the palette</span></div>
+<div class="line"><a name="l05405"></a><span class="lineno"> 5405</span>&#160; <span class="keywordflow">if</span> ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &amp;tga_rgb16);</div>
+<div class="line"><a name="l05406"></a><span class="lineno"> 5406</span>&#160; <span class="keywordflow">else</span> tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &amp;tga_rgb16);</div>
+<div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>&#160;</div>
+<div class="line"><a name="l05408"></a><span class="lineno"> 5408</span>&#160; <span class="keywordflow">if</span>(!tga_comp) <span class="comment">// shouldn&#39;t really happen, stbi__tga_test() should have ensured basic consistency</span></div>
+<div class="line"><a name="l05409"></a><span class="lineno"> 5409</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad format&quot;</span>, <span class="stringliteral">&quot;Can&#39;t find out TGA pixelformat&quot;</span>);</div>
+<div class="line"><a name="l05410"></a><span class="lineno"> 5410</span>&#160;</div>
+<div class="line"><a name="l05411"></a><span class="lineno"> 5411</span>&#160; <span class="comment">// tga info</span></div>
+<div class="line"><a name="l05412"></a><span class="lineno"> 5412</span>&#160; *x = tga_width;</div>
+<div class="line"><a name="l05413"></a><span class="lineno"> 5413</span>&#160; *y = tga_height;</div>
+<div class="line"><a name="l05414"></a><span class="lineno"> 5414</span>&#160; <span class="keywordflow">if</span> (comp) *comp = tga_comp;</div>
+<div class="line"><a name="l05415"></a><span class="lineno"> 5415</span>&#160;</div>
+<div class="line"><a name="l05416"></a><span class="lineno"> 5416</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))</div>
+<div class="line"><a name="l05417"></a><span class="lineno"> 5417</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;Corrupt TGA&quot;</span>);</div>
+<div class="line"><a name="l05418"></a><span class="lineno"> 5418</span>&#160;</div>
+<div class="line"><a name="l05419"></a><span class="lineno"> 5419</span>&#160; tga_data = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);</div>
+<div class="line"><a name="l05420"></a><span class="lineno"> 5420</span>&#160; <span class="keywordflow">if</span> (!tga_data) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l05421"></a><span class="lineno"> 5421</span>&#160;</div>
+<div class="line"><a name="l05422"></a><span class="lineno"> 5422</span>&#160; <span class="comment">// skip to the data&#39;s starting position (offset usually = 0)</span></div>
+<div class="line"><a name="l05423"></a><span class="lineno"> 5423</span>&#160; stbi__skip(s, tga_offset );</div>
+<div class="line"><a name="l05424"></a><span class="lineno"> 5424</span>&#160;</div>
+<div class="line"><a name="l05425"></a><span class="lineno"> 5425</span>&#160; <span class="keywordflow">if</span> ( !tga_indexed &amp;&amp; !tga_is_RLE &amp;&amp; !tga_rgb16 ) {</div>
+<div class="line"><a name="l05426"></a><span class="lineno"> 5426</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; tga_height; ++i) {</div>
+<div class="line"><a name="l05427"></a><span class="lineno"> 5427</span>&#160; <span class="keywordtype">int</span> row = tga_inverted ? tga_height -i - 1 : i;</div>
+<div class="line"><a name="l05428"></a><span class="lineno"> 5428</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *tga_row = tga_data + row*tga_width*tga_comp;</div>
+<div class="line"><a name="l05429"></a><span class="lineno"> 5429</span>&#160; stbi__getn(s, tga_row, tga_width * tga_comp);</div>
+<div class="line"><a name="l05430"></a><span class="lineno"> 5430</span>&#160; }</div>
+<div class="line"><a name="l05431"></a><span class="lineno"> 5431</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05432"></a><span class="lineno"> 5432</span>&#160; <span class="comment">// do I need to load a palette?</span></div>
+<div class="line"><a name="l05433"></a><span class="lineno"> 5433</span>&#160; <span class="keywordflow">if</span> ( tga_indexed)</div>
+<div class="line"><a name="l05434"></a><span class="lineno"> 5434</span>&#160; {</div>
+<div class="line"><a name="l05435"></a><span class="lineno"> 5435</span>&#160; <span class="comment">// any data to skip? (offset usually = 0)</span></div>
+<div class="line"><a name="l05436"></a><span class="lineno"> 5436</span>&#160; stbi__skip(s, tga_palette_start );</div>
+<div class="line"><a name="l05437"></a><span class="lineno"> 5437</span>&#160; <span class="comment">// load the palette</span></div>
+<div class="line"><a name="l05438"></a><span class="lineno"> 5438</span>&#160; tga_palette = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);</div>
+<div class="line"><a name="l05439"></a><span class="lineno"> 5439</span>&#160; <span class="keywordflow">if</span> (!tga_palette) {</div>
+<div class="line"><a name="l05440"></a><span class="lineno"> 5440</span>&#160; STBI_FREE(tga_data);</div>
+<div class="line"><a name="l05441"></a><span class="lineno"> 5441</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l05442"></a><span class="lineno"> 5442</span>&#160; }</div>
+<div class="line"><a name="l05443"></a><span class="lineno"> 5443</span>&#160; <span class="keywordflow">if</span> (tga_rgb16) {</div>
+<div class="line"><a name="l05444"></a><span class="lineno"> 5444</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *pal_entry = tga_palette;</div>
+<div class="line"><a name="l05445"></a><span class="lineno"> 5445</span>&#160; STBI_ASSERT(tga_comp == <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a>);</div>
+<div class="line"><a name="l05446"></a><span class="lineno"> 5446</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; tga_palette_len; ++i) {</div>
+<div class="line"><a name="l05447"></a><span class="lineno"> 5447</span>&#160; stbi__tga_read_rgb16(s, pal_entry);</div>
+<div class="line"><a name="l05448"></a><span class="lineno"> 5448</span>&#160; pal_entry += tga_comp;</div>
+<div class="line"><a name="l05449"></a><span class="lineno"> 5449</span>&#160; }</div>
+<div class="line"><a name="l05450"></a><span class="lineno"> 5450</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {</div>
+<div class="line"><a name="l05451"></a><span class="lineno"> 5451</span>&#160; STBI_FREE(tga_data);</div>
+<div class="line"><a name="l05452"></a><span class="lineno"> 5452</span>&#160; STBI_FREE(tga_palette);</div>
+<div class="line"><a name="l05453"></a><span class="lineno"> 5453</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad palette&quot;</span>, <span class="stringliteral">&quot;Corrupt TGA&quot;</span>);</div>
+<div class="line"><a name="l05454"></a><span class="lineno"> 5454</span>&#160; }</div>
+<div class="line"><a name="l05455"></a><span class="lineno"> 5455</span>&#160; }</div>
+<div class="line"><a name="l05456"></a><span class="lineno"> 5456</span>&#160; <span class="comment">// load the data</span></div>
+<div class="line"><a name="l05457"></a><span class="lineno"> 5457</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; tga_width * tga_height; ++i)</div>
+<div class="line"><a name="l05458"></a><span class="lineno"> 5458</span>&#160; {</div>
+<div class="line"><a name="l05459"></a><span class="lineno"> 5459</span>&#160; <span class="comment">// if I&#39;m in RLE mode, do I need to get a RLE stbi__pngchunk?</span></div>
+<div class="line"><a name="l05460"></a><span class="lineno"> 5460</span>&#160; <span class="keywordflow">if</span> ( tga_is_RLE )</div>
+<div class="line"><a name="l05461"></a><span class="lineno"> 5461</span>&#160; {</div>
+<div class="line"><a name="l05462"></a><span class="lineno"> 5462</span>&#160; <span class="keywordflow">if</span> ( RLE_count == 0 )</div>
+<div class="line"><a name="l05463"></a><span class="lineno"> 5463</span>&#160; {</div>
+<div class="line"><a name="l05464"></a><span class="lineno"> 5464</span>&#160; <span class="comment">// yep, get the next byte as a RLE command</span></div>
+<div class="line"><a name="l05465"></a><span class="lineno"> 5465</span>&#160; <span class="keywordtype">int</span> RLE_cmd = stbi__get8(s);</div>
+<div class="line"><a name="l05466"></a><span class="lineno"> 5466</span>&#160; RLE_count = 1 + (RLE_cmd &amp; 127);</div>
+<div class="line"><a name="l05467"></a><span class="lineno"> 5467</span>&#160; RLE_repeating = RLE_cmd &gt;&gt; 7;</div>
+<div class="line"><a name="l05468"></a><span class="lineno"> 5468</span>&#160; read_next_pixel = 1;</div>
+<div class="line"><a name="l05469"></a><span class="lineno"> 5469</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( !RLE_repeating )</div>
+<div class="line"><a name="l05470"></a><span class="lineno"> 5470</span>&#160; {</div>
+<div class="line"><a name="l05471"></a><span class="lineno"> 5471</span>&#160; read_next_pixel = 1;</div>
+<div class="line"><a name="l05472"></a><span class="lineno"> 5472</span>&#160; }</div>
+<div class="line"><a name="l05473"></a><span class="lineno"> 5473</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05474"></a><span class="lineno"> 5474</span>&#160; {</div>
+<div class="line"><a name="l05475"></a><span class="lineno"> 5475</span>&#160; read_next_pixel = 1;</div>
+<div class="line"><a name="l05476"></a><span class="lineno"> 5476</span>&#160; }</div>
+<div class="line"><a name="l05477"></a><span class="lineno"> 5477</span>&#160; <span class="comment">// OK, if I need to read a pixel, do it now</span></div>
+<div class="line"><a name="l05478"></a><span class="lineno"> 5478</span>&#160; <span class="keywordflow">if</span> ( read_next_pixel )</div>
+<div class="line"><a name="l05479"></a><span class="lineno"> 5479</span>&#160; {</div>
+<div class="line"><a name="l05480"></a><span class="lineno"> 5480</span>&#160; <span class="comment">// load however much data we did have</span></div>
+<div class="line"><a name="l05481"></a><span class="lineno"> 5481</span>&#160; <span class="keywordflow">if</span> ( tga_indexed )</div>
+<div class="line"><a name="l05482"></a><span class="lineno"> 5482</span>&#160; {</div>
+<div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>&#160; <span class="comment">// read in index, then perform the lookup</span></div>
+<div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>&#160; <span class="keywordtype">int</span> pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s);</div>
+<div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>&#160; <span class="keywordflow">if</span> ( pal_idx &gt;= tga_palette_len ) {</div>
+<div class="line"><a name="l05486"></a><span class="lineno"> 5486</span>&#160; <span class="comment">// invalid index</span></div>
+<div class="line"><a name="l05487"></a><span class="lineno"> 5487</span>&#160; pal_idx = 0;</div>
+<div class="line"><a name="l05488"></a><span class="lineno"> 5488</span>&#160; }</div>
+<div class="line"><a name="l05489"></a><span class="lineno"> 5489</span>&#160; pal_idx *= tga_comp;</div>
+<div class="line"><a name="l05490"></a><span class="lineno"> 5490</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; tga_comp; ++j) {</div>
+<div class="line"><a name="l05491"></a><span class="lineno"> 5491</span>&#160; raw_data[j] = tga_palette[pal_idx+j];</div>
+<div class="line"><a name="l05492"></a><span class="lineno"> 5492</span>&#160; }</div>
+<div class="line"><a name="l05493"></a><span class="lineno"> 5493</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tga_rgb16) {</div>
+<div class="line"><a name="l05494"></a><span class="lineno"> 5494</span>&#160; STBI_ASSERT(tga_comp == <a class="code" href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a>);</div>
+<div class="line"><a name="l05495"></a><span class="lineno"> 5495</span>&#160; stbi__tga_read_rgb16(s, raw_data);</div>
+<div class="line"><a name="l05496"></a><span class="lineno"> 5496</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05497"></a><span class="lineno"> 5497</span>&#160; <span class="comment">// read in the data raw</span></div>
+<div class="line"><a name="l05498"></a><span class="lineno"> 5498</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; tga_comp; ++j) {</div>
+<div class="line"><a name="l05499"></a><span class="lineno"> 5499</span>&#160; raw_data[j] = stbi__get8(s);</div>
+<div class="line"><a name="l05500"></a><span class="lineno"> 5500</span>&#160; }</div>
+<div class="line"><a name="l05501"></a><span class="lineno"> 5501</span>&#160; }</div>
+<div class="line"><a name="l05502"></a><span class="lineno"> 5502</span>&#160; <span class="comment">// clear the reading flag for the next pixel</span></div>
+<div class="line"><a name="l05503"></a><span class="lineno"> 5503</span>&#160; read_next_pixel = 0;</div>
+<div class="line"><a name="l05504"></a><span class="lineno"> 5504</span>&#160; } <span class="comment">// end of reading a pixel</span></div>
+<div class="line"><a name="l05505"></a><span class="lineno"> 5505</span>&#160;</div>
+<div class="line"><a name="l05506"></a><span class="lineno"> 5506</span>&#160; <span class="comment">// copy data</span></div>
+<div class="line"><a name="l05507"></a><span class="lineno"> 5507</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; tga_comp; ++j)</div>
+<div class="line"><a name="l05508"></a><span class="lineno"> 5508</span>&#160; tga_data[i*tga_comp+j] = raw_data[j];</div>
+<div class="line"><a name="l05509"></a><span class="lineno"> 5509</span>&#160;</div>
+<div class="line"><a name="l05510"></a><span class="lineno"> 5510</span>&#160; <span class="comment">// in case we&#39;re in RLE mode, keep counting down</span></div>
+<div class="line"><a name="l05511"></a><span class="lineno"> 5511</span>&#160; --RLE_count;</div>
+<div class="line"><a name="l05512"></a><span class="lineno"> 5512</span>&#160; }</div>
+<div class="line"><a name="l05513"></a><span class="lineno"> 5513</span>&#160; <span class="comment">// do I need to invert the image?</span></div>
+<div class="line"><a name="l05514"></a><span class="lineno"> 5514</span>&#160; <span class="keywordflow">if</span> ( tga_inverted )</div>
+<div class="line"><a name="l05515"></a><span class="lineno"> 5515</span>&#160; {</div>
+<div class="line"><a name="l05516"></a><span class="lineno"> 5516</span>&#160; <span class="keywordflow">for</span> (j = 0; j*2 &lt; tga_height; ++j)</div>
+<div class="line"><a name="l05517"></a><span class="lineno"> 5517</span>&#160; {</div>
+<div class="line"><a name="l05518"></a><span class="lineno"> 5518</span>&#160; <span class="keywordtype">int</span> index1 = j * tga_width * tga_comp;</div>
+<div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>&#160; <span class="keywordtype">int</span> index2 = (tga_height - 1 - j) * tga_width * tga_comp;</div>
+<div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>&#160; <span class="keywordflow">for</span> (i = tga_width * tga_comp; i &gt; 0; --i)</div>
+<div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>&#160; {</div>
+<div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> temp = tga_data[index1];</div>
+<div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>&#160; tga_data[index1] = tga_data[index2];</div>
+<div class="line"><a name="l05524"></a><span class="lineno"> 5524</span>&#160; tga_data[index2] = temp;</div>
+<div class="line"><a name="l05525"></a><span class="lineno"> 5525</span>&#160; ++index1;</div>
+<div class="line"><a name="l05526"></a><span class="lineno"> 5526</span>&#160; ++index2;</div>
+<div class="line"><a name="l05527"></a><span class="lineno"> 5527</span>&#160; }</div>
+<div class="line"><a name="l05528"></a><span class="lineno"> 5528</span>&#160; }</div>
+<div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>&#160; }</div>
+<div class="line"><a name="l05530"></a><span class="lineno"> 5530</span>&#160; <span class="comment">// clear my palette, if I had one</span></div>
+<div class="line"><a name="l05531"></a><span class="lineno"> 5531</span>&#160; <span class="keywordflow">if</span> ( tga_palette != NULL )</div>
+<div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>&#160; {</div>
+<div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>&#160; STBI_FREE( tga_palette );</div>
+<div class="line"><a name="l05534"></a><span class="lineno"> 5534</span>&#160; }</div>
+<div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>&#160; }</div>
+<div class="line"><a name="l05536"></a><span class="lineno"> 5536</span>&#160;</div>
+<div class="line"><a name="l05537"></a><span class="lineno"> 5537</span>&#160; <span class="comment">// swap RGB - if the source data was RGB16, it already is in the right order</span></div>
+<div class="line"><a name="l05538"></a><span class="lineno"> 5538</span>&#160; <span class="keywordflow">if</span> (tga_comp &gt;= 3 &amp;&amp; !tga_rgb16)</div>
+<div class="line"><a name="l05539"></a><span class="lineno"> 5539</span>&#160; {</div>
+<div class="line"><a name="l05540"></a><span class="lineno"> 5540</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* tga_pixel = tga_data;</div>
+<div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; tga_width * tga_height; ++i)</div>
+<div class="line"><a name="l05542"></a><span class="lineno"> 5542</span>&#160; {</div>
+<div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> temp = tga_pixel[0];</div>
+<div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>&#160; tga_pixel[0] = tga_pixel[2];</div>
+<div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>&#160; tga_pixel[2] = temp;</div>
+<div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>&#160; tga_pixel += tga_comp;</div>
+<div class="line"><a name="l05547"></a><span class="lineno"> 5547</span>&#160; }</div>
+<div class="line"><a name="l05548"></a><span class="lineno"> 5548</span>&#160; }</div>
+<div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>&#160;</div>
+<div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>&#160; <span class="comment">// convert to target component count</span></div>
+<div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != tga_comp)</div>
+<div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>&#160; tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);</div>
+<div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>&#160;</div>
+<div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>&#160; <span class="comment">// the things I do to get rid of an error message, and yet keep</span></div>
+<div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>&#160; <span class="comment">// Microsoft&#39;s C compilers happy... [8^(</span></div>
+<div class="line"><a name="l05556"></a><span class="lineno"> 5556</span>&#160; tga_palette_start = tga_palette_len = tga_palette_bits =</div>
+<div class="line"><a name="l05557"></a><span class="lineno"> 5557</span>&#160; tga_x_origin = tga_y_origin = 0;</div>
+<div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>&#160; <span class="comment">// OK, done</span></div>
+<div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>&#160; <span class="keywordflow">return</span> tga_data;</div>
+<div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>&#160;}</div>
+<div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>&#160;<span class="comment">// *************************************************************************************************</span></div>
+<div class="line"><a name="l05564"></a><span class="lineno"> 5564</span>&#160;<span class="comment">// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB</span></div>
+<div class="line"><a name="l05565"></a><span class="lineno"> 5565</span>&#160;</div>
+<div class="line"><a name="l05566"></a><span class="lineno"> 5566</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PSD</span></div>
+<div class="line"><a name="l05567"></a><span class="lineno"> 5567</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__psd_test(stbi__context *s)</div>
+<div class="line"><a name="l05568"></a><span class="lineno"> 5568</span>&#160;{</div>
+<div class="line"><a name="l05569"></a><span class="lineno"> 5569</span>&#160; <span class="keywordtype">int</span> r = (stbi__get32be(s) == 0x38425053);</div>
+<div class="line"><a name="l05570"></a><span class="lineno"> 5570</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l05571"></a><span class="lineno"> 5571</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>&#160;}</div>
+<div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>&#160;</div>
+<div class="line"><a name="l05574"></a><span class="lineno"> 5574</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__psd_decode_rle(stbi__context *s, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p, <span class="keywordtype">int</span> pixelCount)</div>
+<div class="line"><a name="l05575"></a><span class="lineno"> 5575</span>&#160;{</div>
+<div class="line"><a name="l05576"></a><span class="lineno"> 5576</span>&#160; <span class="keywordtype">int</span> count, nleft, len;</div>
+<div class="line"><a name="l05577"></a><span class="lineno"> 5577</span>&#160;</div>
+<div class="line"><a name="l05578"></a><span class="lineno"> 5578</span>&#160; count = 0;</div>
+<div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>&#160; <span class="keywordflow">while</span> ((nleft = pixelCount - count) &gt; 0) {</div>
+<div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>&#160; len = stbi__get8(s);</div>
+<div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>&#160; <span class="keywordflow">if</span> (len == 128) {</div>
+<div class="line"><a name="l05582"></a><span class="lineno"> 5582</span>&#160; <span class="comment">// No-op.</span></div>
+<div class="line"><a name="l05583"></a><span class="lineno"> 5583</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len &lt; 128) {</div>
+<div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>&#160; <span class="comment">// Copy next len+1 bytes literally.</span></div>
+<div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>&#160; len++;</div>
+<div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>&#160; <span class="keywordflow">if</span> (len &gt; nleft) <span class="keywordflow">return</span> 0; <span class="comment">// corrupt data</span></div>
+<div class="line"><a name="l05587"></a><span class="lineno"> 5587</span>&#160; count += len;</div>
+<div class="line"><a name="l05588"></a><span class="lineno"> 5588</span>&#160; <span class="keywordflow">while</span> (len) {</div>
+<div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>&#160; *p = stbi__get8(s);</div>
+<div class="line"><a name="l05590"></a><span class="lineno"> 5590</span>&#160; p += 4;</div>
+<div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>&#160; len--;</div>
+<div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>&#160; }</div>
+<div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len &gt; 128) {</div>
+<div class="line"><a name="l05594"></a><span class="lineno"> 5594</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> val;</div>
+<div class="line"><a name="l05595"></a><span class="lineno"> 5595</span>&#160; <span class="comment">// Next -len+1 bytes in the dest are replicated from next source byte.</span></div>
+<div class="line"><a name="l05596"></a><span class="lineno"> 5596</span>&#160; <span class="comment">// (Interpret len as a negative 8-bit int.)</span></div>
+<div class="line"><a name="l05597"></a><span class="lineno"> 5597</span>&#160; len = 257 - len;</div>
+<div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>&#160; <span class="keywordflow">if</span> (len &gt; nleft) <span class="keywordflow">return</span> 0; <span class="comment">// corrupt data</span></div>
+<div class="line"><a name="l05599"></a><span class="lineno"> 5599</span>&#160; val = stbi__get8(s);</div>
+<div class="line"><a name="l05600"></a><span class="lineno"> 5600</span>&#160; count += len;</div>
+<div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>&#160; <span class="keywordflow">while</span> (len) {</div>
+<div class="line"><a name="l05602"></a><span class="lineno"> 5602</span>&#160; *p = val;</div>
+<div class="line"><a name="l05603"></a><span class="lineno"> 5603</span>&#160; p += 4;</div>
+<div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>&#160; len--;</div>
+<div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>&#160; }</div>
+<div class="line"><a name="l05606"></a><span class="lineno"> 5606</span>&#160; }</div>
+<div class="line"><a name="l05607"></a><span class="lineno"> 5607</span>&#160; }</div>
+<div class="line"><a name="l05608"></a><span class="lineno"> 5608</span>&#160;</div>
+<div class="line"><a name="l05609"></a><span class="lineno"> 5609</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l05610"></a><span class="lineno"> 5610</span>&#160;}</div>
+<div class="line"><a name="l05611"></a><span class="lineno"> 5611</span>&#160;</div>
+<div class="line"><a name="l05612"></a><span class="lineno"> 5612</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__psd_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri, <span class="keywordtype">int</span> bpc)</div>
+<div class="line"><a name="l05613"></a><span class="lineno"> 5613</span>&#160;{</div>
+<div class="line"><a name="l05614"></a><span class="lineno"> 5614</span>&#160; <span class="keywordtype">int</span> pixelCount;</div>
+<div class="line"><a name="l05615"></a><span class="lineno"> 5615</span>&#160; <span class="keywordtype">int</span> channelCount, compression;</div>
+<div class="line"><a name="l05616"></a><span class="lineno"> 5616</span>&#160; <span class="keywordtype">int</span> channel, i;</div>
+<div class="line"><a name="l05617"></a><span class="lineno"> 5617</span>&#160; <span class="keywordtype">int</span> bitdepth;</div>
+<div class="line"><a name="l05618"></a><span class="lineno"> 5618</span>&#160; <span class="keywordtype">int</span> w,h;</div>
+<div class="line"><a name="l05619"></a><span class="lineno"> 5619</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out;</div>
+<div class="line"><a name="l05620"></a><span class="lineno"> 5620</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l05621"></a><span class="lineno"> 5621</span>&#160;</div>
+<div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>&#160; <span class="comment">// Check identifier</span></div>
+<div class="line"><a name="l05623"></a><span class="lineno"> 5623</span>&#160; <span class="keywordflow">if</span> (stbi__get32be(s) != 0x38425053) <span class="comment">// &quot;8BPS&quot;</span></div>
+<div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;not PSD&quot;</span>, <span class="stringliteral">&quot;Corrupt PSD image&quot;</span>);</div>
+<div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>&#160;</div>
+<div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>&#160; <span class="comment">// Check file type version.</span></div>
+<div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(s) != 1)</div>
+<div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;wrong version&quot;</span>, <span class="stringliteral">&quot;Unsupported version of PSD image&quot;</span>);</div>
+<div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>&#160;</div>
+<div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>&#160; <span class="comment">// Skip 6 reserved bytes.</span></div>
+<div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>&#160; stbi__skip(s, 6 );</div>
+<div class="line"><a name="l05632"></a><span class="lineno"> 5632</span>&#160;</div>
+<div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>&#160; <span class="comment">// Read the number of channels (R, G, B, A, etc).</span></div>
+<div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>&#160; channelCount = stbi__get16be(s);</div>
+<div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>&#160; <span class="keywordflow">if</span> (channelCount &lt; 0 || channelCount &gt; 16)</div>
+<div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;wrong channel count&quot;</span>, <span class="stringliteral">&quot;Unsupported number of channels in PSD image&quot;</span>);</div>
+<div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>&#160;</div>
+<div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>&#160; <span class="comment">// Read the rows and columns of the image.</span></div>
+<div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>&#160; h = stbi__get32be(s);</div>
+<div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>&#160; w = stbi__get32be(s);</div>
+<div class="line"><a name="l05641"></a><span class="lineno"> 5641</span>&#160;</div>
+<div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>&#160; <span class="comment">// Make sure the depth is 8 bits.</span></div>
+<div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>&#160; bitdepth = stbi__get16be(s);</div>
+<div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>&#160; <span class="keywordflow">if</span> (bitdepth != 8 &amp;&amp; bitdepth != 16)</div>
+<div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;unsupported bit depth&quot;</span>, <span class="stringliteral">&quot;PSD bit depth is not 8 or 16 bit&quot;</span>);</div>
+<div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>&#160;</div>
+<div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>&#160; <span class="comment">// Make sure the color mode is RGB.</span></div>
+<div class="line"><a name="l05648"></a><span class="lineno"> 5648</span>&#160; <span class="comment">// Valid options are:</span></div>
+<div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>&#160; <span class="comment">// 0: Bitmap</span></div>
+<div class="line"><a name="l05650"></a><span class="lineno"> 5650</span>&#160; <span class="comment">// 1: Grayscale</span></div>
+<div class="line"><a name="l05651"></a><span class="lineno"> 5651</span>&#160; <span class="comment">// 2: Indexed color</span></div>
+<div class="line"><a name="l05652"></a><span class="lineno"> 5652</span>&#160; <span class="comment">// 3: RGB color</span></div>
+<div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>&#160; <span class="comment">// 4: CMYK color</span></div>
+<div class="line"><a name="l05654"></a><span class="lineno"> 5654</span>&#160; <span class="comment">// 7: Multichannel</span></div>
+<div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>&#160; <span class="comment">// 8: Duotone</span></div>
+<div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>&#160; <span class="comment">// 9: Lab color</span></div>
+<div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(s) != 3)</div>
+<div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;wrong color format&quot;</span>, <span class="stringliteral">&quot;PSD is not in RGB color format&quot;</span>);</div>
+<div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>&#160;</div>
+<div class="line"><a name="l05660"></a><span class="lineno"> 5660</span>&#160; <span class="comment">// Skip the Mode Data. (It&#39;s the palette for indexed color; other info for other modes.)</span></div>
+<div class="line"><a name="l05661"></a><span class="lineno"> 5661</span>&#160; stbi__skip(s,stbi__get32be(s) );</div>
+<div class="line"><a name="l05662"></a><span class="lineno"> 5662</span>&#160;</div>
+<div class="line"><a name="l05663"></a><span class="lineno"> 5663</span>&#160; <span class="comment">// Skip the image resources. (resolution, pen tool paths, etc)</span></div>
+<div class="line"><a name="l05664"></a><span class="lineno"> 5664</span>&#160; stbi__skip(s, stbi__get32be(s) );</div>
+<div class="line"><a name="l05665"></a><span class="lineno"> 5665</span>&#160;</div>
+<div class="line"><a name="l05666"></a><span class="lineno"> 5666</span>&#160; <span class="comment">// Skip the reserved data.</span></div>
+<div class="line"><a name="l05667"></a><span class="lineno"> 5667</span>&#160; stbi__skip(s, stbi__get32be(s) );</div>
+<div class="line"><a name="l05668"></a><span class="lineno"> 5668</span>&#160;</div>
+<div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>&#160; <span class="comment">// Find out if the data is compressed.</span></div>
+<div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>&#160; <span class="comment">// Known values:</span></div>
+<div class="line"><a name="l05671"></a><span class="lineno"> 5671</span>&#160; <span class="comment">// 0: no compression</span></div>
+<div class="line"><a name="l05672"></a><span class="lineno"> 5672</span>&#160; <span class="comment">// 1: RLE compressed</span></div>
+<div class="line"><a name="l05673"></a><span class="lineno"> 5673</span>&#160; compression = stbi__get16be(s);</div>
+<div class="line"><a name="l05674"></a><span class="lineno"> 5674</span>&#160; <span class="keywordflow">if</span> (compression &gt; 1)</div>
+<div class="line"><a name="l05675"></a><span class="lineno"> 5675</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad compression&quot;</span>, <span class="stringliteral">&quot;PSD has an unknown compression format&quot;</span>);</div>
+<div class="line"><a name="l05676"></a><span class="lineno"> 5676</span>&#160;</div>
+<div class="line"><a name="l05677"></a><span class="lineno"> 5677</span>&#160; <span class="comment">// Check size</span></div>
+<div class="line"><a name="l05678"></a><span class="lineno"> 5678</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(4, w, h, 0))</div>
+<div class="line"><a name="l05679"></a><span class="lineno"> 5679</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;Corrupt PSD&quot;</span>);</div>
+<div class="line"><a name="l05680"></a><span class="lineno"> 5680</span>&#160;</div>
+<div class="line"><a name="l05681"></a><span class="lineno"> 5681</span>&#160; <span class="comment">// Create the destination image.</span></div>
+<div class="line"><a name="l05682"></a><span class="lineno"> 5682</span>&#160;</div>
+<div class="line"><a name="l05683"></a><span class="lineno"> 5683</span>&#160; <span class="keywordflow">if</span> (!compression &amp;&amp; bitdepth == 16 &amp;&amp; bpc == 16) {</div>
+<div class="line"><a name="l05684"></a><span class="lineno"> 5684</span>&#160; out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(8, w, h, 0);</div>
+<div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>&#160; ri-&gt;bits_per_channel = 16;</div>
+<div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05687"></a><span class="lineno"> 5687</span>&#160; out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc(4 * w*h);</div>
+<div class="line"><a name="l05688"></a><span class="lineno"> 5688</span>&#160;</div>
+<div class="line"><a name="l05689"></a><span class="lineno"> 5689</span>&#160; <span class="keywordflow">if</span> (!out) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l05690"></a><span class="lineno"> 5690</span>&#160; pixelCount = w*h;</div>
+<div class="line"><a name="l05691"></a><span class="lineno"> 5691</span>&#160;</div>
+<div class="line"><a name="l05692"></a><span class="lineno"> 5692</span>&#160; <span class="comment">// Initialize the data to zero.</span></div>
+<div class="line"><a name="l05693"></a><span class="lineno"> 5693</span>&#160; <span class="comment">//memset( out, 0, pixelCount * 4 );</span></div>
+<div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>&#160;</div>
+<div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>&#160; <span class="comment">// Finally, the image data.</span></div>
+<div class="line"><a name="l05696"></a><span class="lineno"> 5696</span>&#160; <span class="keywordflow">if</span> (compression) {</div>
+<div class="line"><a name="l05697"></a><span class="lineno"> 5697</span>&#160; <span class="comment">// RLE as used by .PSD and .TIFF</span></div>
+<div class="line"><a name="l05698"></a><span class="lineno"> 5698</span>&#160; <span class="comment">// Loop until you get the number of unpacked bytes you are expecting:</span></div>
+<div class="line"><a name="l05699"></a><span class="lineno"> 5699</span>&#160; <span class="comment">// Read the next source byte into n.</span></div>
+<div class="line"><a name="l05700"></a><span class="lineno"> 5700</span>&#160; <span class="comment">// If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.</span></div>
+<div class="line"><a name="l05701"></a><span class="lineno"> 5701</span>&#160; <span class="comment">// Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.</span></div>
+<div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>&#160; <span class="comment">// Else if n is 128, noop.</span></div>
+<div class="line"><a name="l05703"></a><span class="lineno"> 5703</span>&#160; <span class="comment">// Endloop</span></div>
+<div class="line"><a name="l05704"></a><span class="lineno"> 5704</span>&#160;</div>
+<div class="line"><a name="l05705"></a><span class="lineno"> 5705</span>&#160; <span class="comment">// The RLE-compressed data is preceeded by a 2-byte data count for each row in the data,</span></div>
+<div class="line"><a name="l05706"></a><span class="lineno"> 5706</span>&#160; <span class="comment">// which we&#39;re going to just skip.</span></div>
+<div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>&#160; stbi__skip(s, h * channelCount * 2 );</div>
+<div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>&#160;</div>
+<div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>&#160; <span class="comment">// Read the RLE data by channel.</span></div>
+<div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>&#160; <span class="keywordflow">for</span> (channel = 0; channel &lt; 4; channel++) {</div>
+<div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p;</div>
+<div class="line"><a name="l05712"></a><span class="lineno"> 5712</span>&#160;</div>
+<div class="line"><a name="l05713"></a><span class="lineno"> 5713</span>&#160; p = out+channel;</div>
+<div class="line"><a name="l05714"></a><span class="lineno"> 5714</span>&#160; <span class="keywordflow">if</span> (channel &gt;= channelCount) {</div>
+<div class="line"><a name="l05715"></a><span class="lineno"> 5715</span>&#160; <span class="comment">// Fill this channel with default data.</span></div>
+<div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, p += 4)</div>
+<div class="line"><a name="l05717"></a><span class="lineno"> 5717</span>&#160; *p = (channel == 3 ? 255 : 0);</div>
+<div class="line"><a name="l05718"></a><span class="lineno"> 5718</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05719"></a><span class="lineno"> 5719</span>&#160; <span class="comment">// Read the RLE data.</span></div>
+<div class="line"><a name="l05720"></a><span class="lineno"> 5720</span>&#160; <span class="keywordflow">if</span> (!stbi__psd_decode_rle(s, p, pixelCount)) {</div>
+<div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>&#160; STBI_FREE(out);</div>
+<div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;corrupt&quot;</span>, <span class="stringliteral">&quot;bad RLE data&quot;</span>);</div>
+<div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>&#160; }</div>
+<div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>&#160; }</div>
+<div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>&#160; }</div>
+<div class="line"><a name="l05726"></a><span class="lineno"> 5726</span>&#160;</div>
+<div class="line"><a name="l05727"></a><span class="lineno"> 5727</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05728"></a><span class="lineno"> 5728</span>&#160; <span class="comment">// We&#39;re at the raw image data. It&#39;s each channel in order (Red, Green, Blue, Alpha, ...)</span></div>
+<div class="line"><a name="l05729"></a><span class="lineno"> 5729</span>&#160; <span class="comment">// where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.</span></div>
+<div class="line"><a name="l05730"></a><span class="lineno"> 5730</span>&#160;</div>
+<div class="line"><a name="l05731"></a><span class="lineno"> 5731</span>&#160; <span class="comment">// Read the data by channel.</span></div>
+<div class="line"><a name="l05732"></a><span class="lineno"> 5732</span>&#160; <span class="keywordflow">for</span> (channel = 0; channel &lt; 4; channel++) {</div>
+<div class="line"><a name="l05733"></a><span class="lineno"> 5733</span>&#160; <span class="keywordflow">if</span> (channel &gt;= channelCount) {</div>
+<div class="line"><a name="l05734"></a><span class="lineno"> 5734</span>&#160; <span class="comment">// Fill this channel with default data.</span></div>
+<div class="line"><a name="l05735"></a><span class="lineno"> 5735</span>&#160; <span class="keywordflow">if</span> (bitdepth == 16 &amp;&amp; bpc == 16) {</div>
+<div class="line"><a name="l05736"></a><span class="lineno"> 5736</span>&#160; stbi__uint16 *q = ((stbi__uint16 *) out) + channel;</div>
+<div class="line"><a name="l05737"></a><span class="lineno"> 5737</span>&#160; stbi__uint16 val = channel == 3 ? 65535 : 0;</div>
+<div class="line"><a name="l05738"></a><span class="lineno"> 5738</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, q += 4)</div>
+<div class="line"><a name="l05739"></a><span class="lineno"> 5739</span>&#160; *q = val;</div>
+<div class="line"><a name="l05740"></a><span class="lineno"> 5740</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05741"></a><span class="lineno"> 5741</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p = out+channel;</div>
+<div class="line"><a name="l05742"></a><span class="lineno"> 5742</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> val = channel == 3 ? 255 : 0;</div>
+<div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, p += 4)</div>
+<div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>&#160; *p = val;</div>
+<div class="line"><a name="l05745"></a><span class="lineno"> 5745</span>&#160; }</div>
+<div class="line"><a name="l05746"></a><span class="lineno"> 5746</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>&#160; <span class="keywordflow">if</span> (ri-&gt;bits_per_channel == 16) { <span class="comment">// output bpc</span></div>
+<div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>&#160; stbi__uint16 *q = ((stbi__uint16 *) out) + channel;</div>
+<div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, q += 4)</div>
+<div class="line"><a name="l05750"></a><span class="lineno"> 5750</span>&#160; *q = (stbi__uint16) stbi__get16be(s);</div>
+<div class="line"><a name="l05751"></a><span class="lineno"> 5751</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p = out+channel;</div>
+<div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>&#160; <span class="keywordflow">if</span> (bitdepth == 16) { <span class="comment">// input bpc</span></div>
+<div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, p += 4)</div>
+<div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>&#160; *p = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) (stbi__get16be(s) &gt;&gt; 8);</div>
+<div class="line"><a name="l05756"></a><span class="lineno"> 5756</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05757"></a><span class="lineno"> 5757</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; pixelCount; i++, p += 4)</div>
+<div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>&#160; *p = stbi__get8(s);</div>
+<div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>&#160; }</div>
+<div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>&#160; }</div>
+<div class="line"><a name="l05761"></a><span class="lineno"> 5761</span>&#160; }</div>
+<div class="line"><a name="l05762"></a><span class="lineno"> 5762</span>&#160; }</div>
+<div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>&#160; }</div>
+<div class="line"><a name="l05764"></a><span class="lineno"> 5764</span>&#160;</div>
+<div class="line"><a name="l05765"></a><span class="lineno"> 5765</span>&#160; <span class="comment">// remove weird white matte from PSD</span></div>
+<div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>&#160; <span class="keywordflow">if</span> (channelCount &gt;= 4) {</div>
+<div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>&#160; <span class="keywordflow">if</span> (ri-&gt;bits_per_channel == 16) {</div>
+<div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w*h; ++i) {</div>
+<div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>&#160; stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i;</div>
+<div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>&#160; <span class="keywordflow">if</span> (pixel[3] != 0 &amp;&amp; pixel[3] != 65535) {</div>
+<div class="line"><a name="l05771"></a><span class="lineno"> 5771</span>&#160; <span class="keywordtype">float</span> a = pixel[3] / 65535.0f;</div>
+<div class="line"><a name="l05772"></a><span class="lineno"> 5772</span>&#160; <span class="keywordtype">float</span> ra = 1.0f / a;</div>
+<div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>&#160; <span class="keywordtype">float</span> inv_a = 65535.0f * (1 - ra);</div>
+<div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>&#160; pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a);</div>
+<div class="line"><a name="l05775"></a><span class="lineno"> 5775</span>&#160; pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a);</div>
+<div class="line"><a name="l05776"></a><span class="lineno"> 5776</span>&#160; pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a);</div>
+<div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>&#160; }</div>
+<div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>&#160; }</div>
+<div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; w*h; ++i) {</div>
+<div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *pixel = out + 4*i;</div>
+<div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>&#160; <span class="keywordflow">if</span> (pixel[3] != 0 &amp;&amp; pixel[3] != 255) {</div>
+<div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>&#160; <span class="keywordtype">float</span> a = pixel[3] / 255.0f;</div>
+<div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>&#160; <span class="keywordtype">float</span> ra = 1.0f / a;</div>
+<div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>&#160; <span class="keywordtype">float</span> inv_a = 255.0f * (1 - ra);</div>
+<div class="line"><a name="l05786"></a><span class="lineno"> 5786</span>&#160; pixel[0] = (<span class="keywordtype">unsigned</span> char) (pixel[0]*ra + inv_a);</div>
+<div class="line"><a name="l05787"></a><span class="lineno"> 5787</span>&#160; pixel[1] = (<span class="keywordtype">unsigned</span> char) (pixel[1]*ra + inv_a);</div>
+<div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>&#160; pixel[2] = (<span class="keywordtype">unsigned</span> char) (pixel[2]*ra + inv_a);</div>
+<div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>&#160; }</div>
+<div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>&#160; }</div>
+<div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>&#160; }</div>
+<div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>&#160; }</div>
+<div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>&#160;</div>
+<div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>&#160; <span class="comment">// convert to desired output format</span></div>
+<div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != 4) {</div>
+<div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>&#160; <span class="keywordflow">if</span> (ri-&gt;bits_per_channel == 16)</div>
+<div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>&#160; out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h);</div>
+<div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>&#160; out = stbi__convert_format(out, 4, req_comp, w, h);</div>
+<div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>&#160; <span class="keywordflow">if</span> (out == NULL) <span class="keywordflow">return</span> out; <span class="comment">// stbi__convert_format frees input on failure</span></div>
+<div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>&#160; }</div>
+<div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>&#160;</div>
+<div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>&#160; <span class="keywordflow">if</span> (comp) *comp = 4;</div>
+<div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>&#160; *y = h;</div>
+<div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>&#160; *x = w;</div>
+<div class="line"><a name="l05806"></a><span class="lineno"> 5806</span>&#160;</div>
+<div class="line"><a name="l05807"></a><span class="lineno"> 5807</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l05808"></a><span class="lineno"> 5808</span>&#160;}</div>
+<div class="line"><a name="l05809"></a><span class="lineno"> 5809</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l05810"></a><span class="lineno"> 5810</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>&#160;<span class="comment">// *************************************************************************************************</span></div>
+<div class="line"><a name="l05812"></a><span class="lineno"> 5812</span>&#160;<span class="comment">// Softimage PIC loader</span></div>
+<div class="line"><a name="l05813"></a><span class="lineno"> 5813</span>&#160;<span class="comment">// by Tom Seddon</span></div>
+<div class="line"><a name="l05814"></a><span class="lineno"> 5814</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l05815"></a><span class="lineno"> 5815</span>&#160;<span class="comment">// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format</span></div>
+<div class="line"><a name="l05816"></a><span class="lineno"> 5816</span>&#160;<span class="comment">// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/</span></div>
+<div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>&#160;</div>
+<div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PIC</span></div>
+<div class="line"><a name="l05819"></a><span class="lineno"> 5819</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_is4(stbi__context *s,<span class="keyword">const</span> <span class="keywordtype">char</span> *str)</div>
+<div class="line"><a name="l05820"></a><span class="lineno"> 5820</span>&#160;{</div>
+<div class="line"><a name="l05821"></a><span class="lineno"> 5821</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;4; ++i)</div>
+<div class="line"><a name="l05823"></a><span class="lineno"> 5823</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>)str[i])</div>
+<div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>&#160;</div>
+<div class="line"><a name="l05826"></a><span class="lineno"> 5826</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l05827"></a><span class="lineno"> 5827</span>&#160;}</div>
+<div class="line"><a name="l05828"></a><span class="lineno"> 5828</span>&#160;</div>
+<div class="line"><a name="l05829"></a><span class="lineno"> 5829</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_test_core(stbi__context *s)</div>
+<div class="line"><a name="l05830"></a><span class="lineno"> 5830</span>&#160;{</div>
+<div class="line"><a name="l05831"></a><span class="lineno"> 5831</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l05832"></a><span class="lineno"> 5832</span>&#160;</div>
+<div class="line"><a name="l05833"></a><span class="lineno"> 5833</span>&#160; <span class="keywordflow">if</span> (!stbi__pic_is4(s,<span class="stringliteral">&quot;\x53\x80\xF6\x34&quot;</span>))</div>
+<div class="line"><a name="l05834"></a><span class="lineno"> 5834</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05835"></a><span class="lineno"> 5835</span>&#160;</div>
+<div class="line"><a name="l05836"></a><span class="lineno"> 5836</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;84;++i)</div>
+<div class="line"><a name="l05837"></a><span class="lineno"> 5837</span>&#160; stbi__get8(s);</div>
+<div class="line"><a name="l05838"></a><span class="lineno"> 5838</span>&#160;</div>
+<div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>&#160; <span class="keywordflow">if</span> (!stbi__pic_is4(s,<span class="stringliteral">&quot;PICT&quot;</span>))</div>
+<div class="line"><a name="l05840"></a><span class="lineno"> 5840</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05841"></a><span class="lineno"> 5841</span>&#160;</div>
+<div class="line"><a name="l05842"></a><span class="lineno"> 5842</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>&#160;}</div>
+<div class="line"><a name="l05844"></a><span class="lineno"> 5844</span>&#160;</div>
+<div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>&#160;{</div>
+<div class="line"><a name="l05847"></a><span class="lineno"> 5847</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> size,type,channel;</div>
+<div class="line"><a name="l05848"></a><span class="lineno"> 5848</span>&#160;} stbi__pic_packet;</div>
+<div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>&#160;</div>
+<div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__readval(stbi__context *s, <span class="keywordtype">int</span> channel, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *dest)</div>
+<div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>&#160;{</div>
+<div class="line"><a name="l05852"></a><span class="lineno"> 5852</span>&#160; <span class="keywordtype">int</span> mask=0x80, i;</div>
+<div class="line"><a name="l05853"></a><span class="lineno"> 5853</span>&#160;</div>
+<div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;4; ++i, mask&gt;&gt;=1) {</div>
+<div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>&#160; <span class="keywordflow">if</span> (channel &amp; mask) {</div>
+<div class="line"><a name="l05856"></a><span class="lineno"> 5856</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;PIC file too short&quot;</span>);</div>
+<div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>&#160; dest[i]=stbi__get8(s);</div>
+<div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>&#160; }</div>
+<div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>&#160; }</div>
+<div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>&#160;</div>
+<div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>&#160; <span class="keywordflow">return</span> dest;</div>
+<div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>&#160;}</div>
+<div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>&#160;</div>
+<div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__copyval(<span class="keywordtype">int</span> channel,<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *dest,<span class="keyword">const</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *src)</div>
+<div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>&#160;{</div>
+<div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>&#160; <span class="keywordtype">int</span> mask=0x80,i;</div>
+<div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>&#160;</div>
+<div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>&#160; <span class="keywordflow">for</span> (i=0;i&lt;4; ++i, mask&gt;&gt;=1)</div>
+<div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>&#160; <span class="keywordflow">if</span> (channel&amp;mask)</div>
+<div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>&#160; dest[i]=src[i];</div>
+<div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>&#160;}</div>
+<div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>&#160;</div>
+<div class="line"><a name="l05873"></a><span class="lineno"> 5873</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__pic_load_core(stbi__context *s,<span class="keywordtype">int</span> width,<span class="keywordtype">int</span> height,<span class="keywordtype">int</span> *comp, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *result)</div>
+<div class="line"><a name="l05874"></a><span class="lineno"> 5874</span>&#160;{</div>
+<div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>&#160; <span class="keywordtype">int</span> act_comp=0,num_packets=0,y,chained;</div>
+<div class="line"><a name="l05876"></a><span class="lineno"> 5876</span>&#160; stbi__pic_packet packets[10];</div>
+<div class="line"><a name="l05877"></a><span class="lineno"> 5877</span>&#160;</div>
+<div class="line"><a name="l05878"></a><span class="lineno"> 5878</span>&#160; <span class="comment">// this will (should...) cater for even some bizarre stuff like having data</span></div>
+<div class="line"><a name="l05879"></a><span class="lineno"> 5879</span>&#160; <span class="comment">// for the same channel in multiple packets.</span></div>
+<div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l05881"></a><span class="lineno"> 5881</span>&#160; stbi__pic_packet *packet;</div>
+<div class="line"><a name="l05882"></a><span class="lineno"> 5882</span>&#160;</div>
+<div class="line"><a name="l05883"></a><span class="lineno"> 5883</span>&#160; <span class="keywordflow">if</span> (num_packets==<span class="keyword">sizeof</span>(packets)/<span class="keyword">sizeof</span>(packets[0]))</div>
+<div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad format&quot;</span>,<span class="stringliteral">&quot;too many packets&quot;</span>);</div>
+<div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>&#160;</div>
+<div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>&#160; packet = &amp;packets[num_packets++];</div>
+<div class="line"><a name="l05887"></a><span class="lineno"> 5887</span>&#160;</div>
+<div class="line"><a name="l05888"></a><span class="lineno"> 5888</span>&#160; chained = stbi__get8(s);</div>
+<div class="line"><a name="l05889"></a><span class="lineno"> 5889</span>&#160; packet-&gt;size = stbi__get8(s);</div>
+<div class="line"><a name="l05890"></a><span class="lineno"> 5890</span>&#160; packet-&gt;type = stbi__get8(s);</div>
+<div class="line"><a name="l05891"></a><span class="lineno"> 5891</span>&#160; packet-&gt;channel = stbi__get8(s);</div>
+<div class="line"><a name="l05892"></a><span class="lineno"> 5892</span>&#160;</div>
+<div class="line"><a name="l05893"></a><span class="lineno"> 5893</span>&#160; act_comp |= packet-&gt;channel;</div>
+<div class="line"><a name="l05894"></a><span class="lineno"> 5894</span>&#160;</div>
+<div class="line"><a name="l05895"></a><span class="lineno"> 5895</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;file too short (reading packets)&quot;</span>);</div>
+<div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>&#160; <span class="keywordflow">if</span> (packet-&gt;size != 8) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad format&quot;</span>,<span class="stringliteral">&quot;packet isn&#39;t 8bpp&quot;</span>);</div>
+<div class="line"><a name="l05897"></a><span class="lineno"> 5897</span>&#160; } <span class="keywordflow">while</span> (chained);</div>
+<div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>&#160;</div>
+<div class="line"><a name="l05899"></a><span class="lineno"> 5899</span>&#160; *comp = (act_comp &amp; 0x10 ? 4 : 3); <span class="comment">// has alpha channel?</span></div>
+<div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>&#160;</div>
+<div class="line"><a name="l05901"></a><span class="lineno"> 5901</span>&#160; <span class="keywordflow">for</span>(y=0; y&lt;height; ++y) {</div>
+<div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>&#160; <span class="keywordtype">int</span> packet_idx;</div>
+<div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>&#160;</div>
+<div class="line"><a name="l05904"></a><span class="lineno"> 5904</span>&#160; <span class="keywordflow">for</span>(packet_idx=0; packet_idx &lt; num_packets; ++packet_idx) {</div>
+<div class="line"><a name="l05905"></a><span class="lineno"> 5905</span>&#160; stbi__pic_packet *packet = &amp;packets[packet_idx];</div>
+<div class="line"><a name="l05906"></a><span class="lineno"> 5906</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *dest = result+y*width*4;</div>
+<div class="line"><a name="l05907"></a><span class="lineno"> 5907</span>&#160;</div>
+<div class="line"><a name="l05908"></a><span class="lineno"> 5908</span>&#160; <span class="keywordflow">switch</span> (packet-&gt;type) {</div>
+<div class="line"><a name="l05909"></a><span class="lineno"> 5909</span>&#160; <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l05910"></a><span class="lineno"> 5910</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad format&quot;</span>,<span class="stringliteral">&quot;packet has bad compression type&quot;</span>);</div>
+<div class="line"><a name="l05911"></a><span class="lineno"> 5911</span>&#160;</div>
+<div class="line"><a name="l05912"></a><span class="lineno"> 5912</span>&#160; <span class="keywordflow">case</span> 0: {<span class="comment">//uncompressed</span></div>
+<div class="line"><a name="l05913"></a><span class="lineno"> 5913</span>&#160; <span class="keywordtype">int</span> x;</div>
+<div class="line"><a name="l05914"></a><span class="lineno"> 5914</span>&#160;</div>
+<div class="line"><a name="l05915"></a><span class="lineno"> 5915</span>&#160; <span class="keywordflow">for</span>(x=0;x&lt;width;++x, dest+=4)</div>
+<div class="line"><a name="l05916"></a><span class="lineno"> 5916</span>&#160; <span class="keywordflow">if</span> (!stbi__readval(s,packet-&gt;channel,dest))</div>
+<div class="line"><a name="l05917"></a><span class="lineno"> 5917</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05918"></a><span class="lineno"> 5918</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l05919"></a><span class="lineno"> 5919</span>&#160; }</div>
+<div class="line"><a name="l05920"></a><span class="lineno"> 5920</span>&#160;</div>
+<div class="line"><a name="l05921"></a><span class="lineno"> 5921</span>&#160; <span class="keywordflow">case</span> 1:<span class="comment">//Pure RLE</span></div>
+<div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>&#160; {</div>
+<div class="line"><a name="l05923"></a><span class="lineno"> 5923</span>&#160; <span class="keywordtype">int</span> left=width, i;</div>
+<div class="line"><a name="l05924"></a><span class="lineno"> 5924</span>&#160;</div>
+<div class="line"><a name="l05925"></a><span class="lineno"> 5925</span>&#160; <span class="keywordflow">while</span> (left&gt;0) {</div>
+<div class="line"><a name="l05926"></a><span class="lineno"> 5926</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> count,value[4];</div>
+<div class="line"><a name="l05927"></a><span class="lineno"> 5927</span>&#160;</div>
+<div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>&#160; count=stbi__get8(s);</div>
+<div class="line"><a name="l05929"></a><span class="lineno"> 5929</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;file too short (pure read count)&quot;</span>);</div>
+<div class="line"><a name="l05930"></a><span class="lineno"> 5930</span>&#160;</div>
+<div class="line"><a name="l05931"></a><span class="lineno"> 5931</span>&#160; <span class="keywordflow">if</span> (count &gt; left)</div>
+<div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>&#160; count = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) left;</div>
+<div class="line"><a name="l05933"></a><span class="lineno"> 5933</span>&#160;</div>
+<div class="line"><a name="l05934"></a><span class="lineno"> 5934</span>&#160; <span class="keywordflow">if</span> (!stbi__readval(s,packet-&gt;channel,value)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>&#160;</div>
+<div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>&#160; <span class="keywordflow">for</span>(i=0; i&lt;count; ++i,dest+=4)</div>
+<div class="line"><a name="l05937"></a><span class="lineno"> 5937</span>&#160; stbi__copyval(packet-&gt;channel,dest,value);</div>
+<div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>&#160; left -= count;</div>
+<div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>&#160; }</div>
+<div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>&#160; }</div>
+<div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>&#160;</div>
+<div class="line"><a name="l05943"></a><span class="lineno"> 5943</span>&#160; <span class="keywordflow">case</span> 2: {<span class="comment">//Mixed RLE</span></div>
+<div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>&#160; <span class="keywordtype">int</span> left=width;</div>
+<div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>&#160; <span class="keywordflow">while</span> (left&gt;0) {</div>
+<div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>&#160; <span class="keywordtype">int</span> count = stbi__get8(s), i;</div>
+<div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;file too short (mixed read count)&quot;</span>);</div>
+<div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>&#160;</div>
+<div class="line"><a name="l05949"></a><span class="lineno"> 5949</span>&#160; <span class="keywordflow">if</span> (count &gt;= 128) { <span class="comment">// Repeated</span></div>
+<div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> value[4];</div>
+<div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>&#160;</div>
+<div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>&#160; <span class="keywordflow">if</span> (count==128)</div>
+<div class="line"><a name="l05953"></a><span class="lineno"> 5953</span>&#160; count = stbi__get16be(s);</div>
+<div class="line"><a name="l05954"></a><span class="lineno"> 5954</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l05955"></a><span class="lineno"> 5955</span>&#160; count -= 127;</div>
+<div class="line"><a name="l05956"></a><span class="lineno"> 5956</span>&#160; <span class="keywordflow">if</span> (count &gt; left)</div>
+<div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;scanline overrun&quot;</span>);</div>
+<div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>&#160;</div>
+<div class="line"><a name="l05959"></a><span class="lineno"> 5959</span>&#160; <span class="keywordflow">if</span> (!stbi__readval(s,packet-&gt;channel,value))</div>
+<div class="line"><a name="l05960"></a><span class="lineno"> 5960</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05961"></a><span class="lineno"> 5961</span>&#160;</div>
+<div class="line"><a name="l05962"></a><span class="lineno"> 5962</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;count;++i, dest += 4)</div>
+<div class="line"><a name="l05963"></a><span class="lineno"> 5963</span>&#160; stbi__copyval(packet-&gt;channel,dest,value);</div>
+<div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// Raw</span></div>
+<div class="line"><a name="l05965"></a><span class="lineno"> 5965</span>&#160; ++count;</div>
+<div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>&#160; <span class="keywordflow">if</span> (count&gt;left) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;scanline overrun&quot;</span>);</div>
+<div class="line"><a name="l05967"></a><span class="lineno"> 5967</span>&#160;</div>
+<div class="line"><a name="l05968"></a><span class="lineno"> 5968</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;count;++i, dest+=4)</div>
+<div class="line"><a name="l05969"></a><span class="lineno"> 5969</span>&#160; <span class="keywordflow">if</span> (!stbi__readval(s,packet-&gt;channel,dest))</div>
+<div class="line"><a name="l05970"></a><span class="lineno"> 5970</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l05971"></a><span class="lineno"> 5971</span>&#160; }</div>
+<div class="line"><a name="l05972"></a><span class="lineno"> 5972</span>&#160; left-=count;</div>
+<div class="line"><a name="l05973"></a><span class="lineno"> 5973</span>&#160; }</div>
+<div class="line"><a name="l05974"></a><span class="lineno"> 5974</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l05975"></a><span class="lineno"> 5975</span>&#160; }</div>
+<div class="line"><a name="l05976"></a><span class="lineno"> 5976</span>&#160; }</div>
+<div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>&#160; }</div>
+<div class="line"><a name="l05978"></a><span class="lineno"> 5978</span>&#160; }</div>
+<div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>&#160;</div>
+<div class="line"><a name="l05980"></a><span class="lineno"> 5980</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>&#160;}</div>
+<div class="line"><a name="l05982"></a><span class="lineno"> 5982</span>&#160;</div>
+<div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__pic_load(stbi__context *s,<span class="keywordtype">int</span> *px,<span class="keywordtype">int</span> *py,<span class="keywordtype">int</span> *comp,<span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>&#160;{</div>
+<div class="line"><a name="l05985"></a><span class="lineno"> 5985</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *result;</div>
+<div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>&#160; <span class="keywordtype">int</span> i, x,y, internal_comp;</div>
+<div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l05988"></a><span class="lineno"> 5988</span>&#160;</div>
+<div class="line"><a name="l05989"></a><span class="lineno"> 5989</span>&#160; <span class="keywordflow">if</span> (!comp) comp = &amp;internal_comp;</div>
+<div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>&#160;</div>
+<div class="line"><a name="l05991"></a><span class="lineno"> 5991</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;92; ++i)</div>
+<div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>&#160; stbi__get8(s);</div>
+<div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>&#160;</div>
+<div class="line"><a name="l05994"></a><span class="lineno"> 5994</span>&#160; x = stbi__get16be(s);</div>
+<div class="line"><a name="l05995"></a><span class="lineno"> 5995</span>&#160; y = stbi__get16be(s);</div>
+<div class="line"><a name="l05996"></a><span class="lineno"> 5996</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad file&quot;</span>,<span class="stringliteral">&quot;file too short (pic header)&quot;</span>);</div>
+<div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(x, y, 4, 0)) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;PIC image too large to decode&quot;</span>);</div>
+<div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>&#160;</div>
+<div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>&#160; stbi__get32be(s); <span class="comment">//skip `ratio&#39;</span></div>
+<div class="line"><a name="l06000"></a><span class="lineno"> 6000</span>&#160; stbi__get16be(s); <span class="comment">//skip `fields&#39;</span></div>
+<div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>&#160; stbi__get16be(s); <span class="comment">//skip `pad&#39;</span></div>
+<div class="line"><a name="l06002"></a><span class="lineno"> 6002</span>&#160;</div>
+<div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>&#160; <span class="comment">// intermediate buffer is RGBA</span></div>
+<div class="line"><a name="l06004"></a><span class="lineno"> 6004</span>&#160; result = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(x, y, 4, 0);</div>
+<div class="line"><a name="l06005"></a><span class="lineno"> 6005</span>&#160; memset(result, 0xff, x*y*4);</div>
+<div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>&#160;</div>
+<div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>&#160; <span class="keywordflow">if</span> (!stbi__pic_load_core(s,x,y,comp, result)) {</div>
+<div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>&#160; STBI_FREE(result);</div>
+<div class="line"><a name="l06009"></a><span class="lineno"> 6009</span>&#160; result=0;</div>
+<div class="line"><a name="l06010"></a><span class="lineno"> 6010</span>&#160; }</div>
+<div class="line"><a name="l06011"></a><span class="lineno"> 6011</span>&#160; *px = x;</div>
+<div class="line"><a name="l06012"></a><span class="lineno"> 6012</span>&#160; *py = y;</div>
+<div class="line"><a name="l06013"></a><span class="lineno"> 6013</span>&#160; <span class="keywordflow">if</span> (req_comp == 0) req_comp = *comp;</div>
+<div class="line"><a name="l06014"></a><span class="lineno"> 6014</span>&#160; result=stbi__convert_format(result,4,req_comp,x,y);</div>
+<div class="line"><a name="l06015"></a><span class="lineno"> 6015</span>&#160;</div>
+<div class="line"><a name="l06016"></a><span class="lineno"> 6016</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>&#160;}</div>
+<div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>&#160;</div>
+<div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_test(stbi__context *s)</div>
+<div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>&#160;{</div>
+<div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>&#160; <span class="keywordtype">int</span> r = stbi__pic_test_core(s);</div>
+<div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06023"></a><span class="lineno"> 6023</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l06024"></a><span class="lineno"> 6024</span>&#160;}</div>
+<div class="line"><a name="l06025"></a><span class="lineno"> 6025</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>&#160;<span class="comment">// *************************************************************************************************</span></div>
+<div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>&#160;<span class="comment">// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb</span></div>
+<div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>&#160;</div>
+<div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>&#160;<span class="preprocessor">#ifndef STBI_NO_GIF</span></div>
+<div class="line"><a name="l06031"></a><span class="lineno"> 6031</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>&#160;{</div>
+<div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>&#160; stbi__int16 prefix;</div>
+<div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> first;</div>
+<div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> suffix;</div>
+<div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>&#160;} stbi__gif_lzw;</div>
+<div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>&#160;</div>
+<div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
+<div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>&#160;{</div>
+<div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>&#160; <span class="keywordtype">int</span> w,h;</div>
+<div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out, *old_out; <span class="comment">// output buffer (always 4 components)</span></div>
+<div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>&#160; <span class="keywordtype">int</span> flags, bgindex, ratio, transparent, eflags, delay;</div>
+<div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> pal[256][4];</div>
+<div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> lpal[256][4];</div>
+<div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>&#160; stbi__gif_lzw codes[4096];</div>
+<div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *color_table;</div>
+<div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>&#160; <span class="keywordtype">int</span> parse, step;</div>
+<div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>&#160; <span class="keywordtype">int</span> lflags;</div>
+<div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>&#160; <span class="keywordtype">int</span> start_x, start_y;</div>
+<div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>&#160; <span class="keywordtype">int</span> max_x, max_y;</div>
+<div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>&#160; <span class="keywordtype">int</span> cur_x, cur_y;</div>
+<div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>&#160; <span class="keywordtype">int</span> line_size;</div>
+<div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>&#160;} stbi__gif;</div>
+<div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>&#160;</div>
+<div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_test_raw(stbi__context *s)</div>
+<div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>&#160;{</div>
+<div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>&#160; <span class="keywordtype">int</span> sz;</div>
+<div class="line"><a name="l06058"></a><span class="lineno"> 6058</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;G&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;I&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;F&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;8&#39;</span>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>&#160; sz = stbi__get8(s);</div>
+<div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>&#160; <span class="keywordflow">if</span> (sz != <span class="charliteral">&#39;9&#39;</span> &amp;&amp; sz != <span class="charliteral">&#39;7&#39;</span>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;a&#39;</span>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06063"></a><span class="lineno"> 6063</span>&#160;}</div>
+<div class="line"><a name="l06064"></a><span class="lineno"> 6064</span>&#160;</div>
+<div class="line"><a name="l06065"></a><span class="lineno"> 6065</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_test(stbi__context *s)</div>
+<div class="line"><a name="l06066"></a><span class="lineno"> 6066</span>&#160;{</div>
+<div class="line"><a name="l06067"></a><span class="lineno"> 6067</span>&#160; <span class="keywordtype">int</span> r = stbi__gif_test_raw(s);</div>
+<div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06069"></a><span class="lineno"> 6069</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>&#160;}</div>
+<div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>&#160;</div>
+<div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__gif_parse_colortable(stbi__context *s, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> pal[256][4], <span class="keywordtype">int</span> num_entries, <span class="keywordtype">int</span> transp)</div>
+<div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>&#160;{</div>
+<div class="line"><a name="l06074"></a><span class="lineno"> 6074</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; num_entries; ++i) {</div>
+<div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>&#160; pal[i][2] = stbi__get8(s);</div>
+<div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>&#160; pal[i][1] = stbi__get8(s);</div>
+<div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>&#160; pal[i][0] = stbi__get8(s);</div>
+<div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>&#160; pal[i][3] = transp == i ? 0 : 255;</div>
+<div class="line"><a name="l06080"></a><span class="lineno"> 6080</span>&#160; }</div>
+<div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>&#160;}</div>
+<div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>&#160;</div>
+<div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_header(stbi__context *s, stbi__gif *g, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> is_info)</div>
+<div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>&#160;{</div>
+<div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> version;</div>
+<div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;G&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;I&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;F&#39;</span> || stbi__get8(s) != <span class="charliteral">&#39;8&#39;</span>)</div>
+<div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;not GIF&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06088"></a><span class="lineno"> 6088</span>&#160;</div>
+<div class="line"><a name="l06089"></a><span class="lineno"> 6089</span>&#160; version = stbi__get8(s);</div>
+<div class="line"><a name="l06090"></a><span class="lineno"> 6090</span>&#160; <span class="keywordflow">if</span> (version != <span class="charliteral">&#39;7&#39;</span> &amp;&amp; version != <span class="charliteral">&#39;9&#39;</span>) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;not GIF&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06091"></a><span class="lineno"> 6091</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != <span class="charliteral">&#39;a&#39;</span>) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;not GIF&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06092"></a><span class="lineno"> 6092</span>&#160;</div>
+<div class="line"><a name="l06093"></a><span class="lineno"> 6093</span>&#160; stbi__g_failure_reason = <span class="stringliteral">&quot;&quot;</span>;</div>
+<div class="line"><a name="l06094"></a><span class="lineno"> 6094</span>&#160; g-&gt;w = stbi__get16le(s);</div>
+<div class="line"><a name="l06095"></a><span class="lineno"> 6095</span>&#160; g-&gt;h = stbi__get16le(s);</div>
+<div class="line"><a name="l06096"></a><span class="lineno"> 6096</span>&#160; g-&gt;flags = stbi__get8(s);</div>
+<div class="line"><a name="l06097"></a><span class="lineno"> 6097</span>&#160; g-&gt;bgindex = stbi__get8(s);</div>
+<div class="line"><a name="l06098"></a><span class="lineno"> 6098</span>&#160; g-&gt;ratio = stbi__get8(s);</div>
+<div class="line"><a name="l06099"></a><span class="lineno"> 6099</span>&#160; g-&gt;transparent = -1;</div>
+<div class="line"><a name="l06100"></a><span class="lineno"> 6100</span>&#160;</div>
+<div class="line"><a name="l06101"></a><span class="lineno"> 6101</span>&#160; <span class="keywordflow">if</span> (comp != 0) *comp = 4; <span class="comment">// can&#39;t actually tell whether it&#39;s 3 or 4 until we parse the comments</span></div>
+<div class="line"><a name="l06102"></a><span class="lineno"> 6102</span>&#160;</div>
+<div class="line"><a name="l06103"></a><span class="lineno"> 6103</span>&#160; <span class="keywordflow">if</span> (is_info) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06104"></a><span class="lineno"> 6104</span>&#160;</div>
+<div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>&#160; <span class="keywordflow">if</span> (g-&gt;flags &amp; 0x80)</div>
+<div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>&#160; stbi__gif_parse_colortable(s,g-&gt;pal, 2 &lt;&lt; (g-&gt;flags &amp; 7), -1);</div>
+<div class="line"><a name="l06107"></a><span class="lineno"> 6107</span>&#160;</div>
+<div class="line"><a name="l06108"></a><span class="lineno"> 6108</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06109"></a><span class="lineno"> 6109</span>&#160;}</div>
+<div class="line"><a name="l06110"></a><span class="lineno"> 6110</span>&#160;</div>
+<div class="line"><a name="l06111"></a><span class="lineno"> 6111</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_info_raw(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06112"></a><span class="lineno"> 6112</span>&#160;{</div>
+<div class="line"><a name="l06113"></a><span class="lineno"> 6113</span>&#160; stbi__gif* g = (stbi__gif*) stbi__malloc(<span class="keyword">sizeof</span>(stbi__gif));</div>
+<div class="line"><a name="l06114"></a><span class="lineno"> 6114</span>&#160; <span class="keywordflow">if</span> (!stbi__gif_header(s, g, comp, 1)) {</div>
+<div class="line"><a name="l06115"></a><span class="lineno"> 6115</span>&#160; STBI_FREE(g);</div>
+<div class="line"><a name="l06116"></a><span class="lineno"> 6116</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06117"></a><span class="lineno"> 6117</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06118"></a><span class="lineno"> 6118</span>&#160; }</div>
+<div class="line"><a name="l06119"></a><span class="lineno"> 6119</span>&#160; <span class="keywordflow">if</span> (x) *x = g-&gt;w;</div>
+<div class="line"><a name="l06120"></a><span class="lineno"> 6120</span>&#160; <span class="keywordflow">if</span> (y) *y = g-&gt;h;</div>
+<div class="line"><a name="l06121"></a><span class="lineno"> 6121</span>&#160; STBI_FREE(g);</div>
+<div class="line"><a name="l06122"></a><span class="lineno"> 6122</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06123"></a><span class="lineno"> 6123</span>&#160;}</div>
+<div class="line"><a name="l06124"></a><span class="lineno"> 6124</span>&#160;</div>
+<div class="line"><a name="l06125"></a><span class="lineno"> 6125</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)</div>
+<div class="line"><a name="l06126"></a><span class="lineno"> 6126</span>&#160;{</div>
+<div class="line"><a name="l06127"></a><span class="lineno"> 6127</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p, *c;</div>
+<div class="line"><a name="l06128"></a><span class="lineno"> 6128</span>&#160;</div>
+<div class="line"><a name="l06129"></a><span class="lineno"> 6129</span>&#160; <span class="comment">// recurse to decode the prefixes, since the linked-list is backwards,</span></div>
+<div class="line"><a name="l06130"></a><span class="lineno"> 6130</span>&#160; <span class="comment">// and working backwards through an interleaved image would be nasty</span></div>
+<div class="line"><a name="l06131"></a><span class="lineno"> 6131</span>&#160; <span class="keywordflow">if</span> (g-&gt;codes[code].prefix &gt;= 0)</div>
+<div class="line"><a name="l06132"></a><span class="lineno"> 6132</span>&#160; stbi__out_gif_code(g, g-&gt;codes[code].prefix);</div>
+<div class="line"><a name="l06133"></a><span class="lineno"> 6133</span>&#160;</div>
+<div class="line"><a name="l06134"></a><span class="lineno"> 6134</span>&#160; <span class="keywordflow">if</span> (g-&gt;cur_y &gt;= g-&gt;max_y) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l06135"></a><span class="lineno"> 6135</span>&#160;</div>
+<div class="line"><a name="l06136"></a><span class="lineno"> 6136</span>&#160; p = &amp;g-&gt;out[g-&gt;cur_x + g-&gt;cur_y];</div>
+<div class="line"><a name="l06137"></a><span class="lineno"> 6137</span>&#160; c = &amp;g-&gt;color_table[g-&gt;codes[code].suffix * 4];</div>
+<div class="line"><a name="l06138"></a><span class="lineno"> 6138</span>&#160;</div>
+<div class="line"><a name="l06139"></a><span class="lineno"> 6139</span>&#160; <span class="keywordflow">if</span> (c[3] &gt;= 128) {</div>
+<div class="line"><a name="l06140"></a><span class="lineno"> 6140</span>&#160; p[0] = c[2];</div>
+<div class="line"><a name="l06141"></a><span class="lineno"> 6141</span>&#160; p[1] = c[1];</div>
+<div class="line"><a name="l06142"></a><span class="lineno"> 6142</span>&#160; p[2] = c[0];</div>
+<div class="line"><a name="l06143"></a><span class="lineno"> 6143</span>&#160; p[3] = c[3];</div>
+<div class="line"><a name="l06144"></a><span class="lineno"> 6144</span>&#160; }</div>
+<div class="line"><a name="l06145"></a><span class="lineno"> 6145</span>&#160; g-&gt;cur_x += 4;</div>
+<div class="line"><a name="l06146"></a><span class="lineno"> 6146</span>&#160;</div>
+<div class="line"><a name="l06147"></a><span class="lineno"> 6147</span>&#160; <span class="keywordflow">if</span> (g-&gt;cur_x &gt;= g-&gt;max_x) {</div>
+<div class="line"><a name="l06148"></a><span class="lineno"> 6148</span>&#160; g-&gt;cur_x = g-&gt;start_x;</div>
+<div class="line"><a name="l06149"></a><span class="lineno"> 6149</span>&#160; g-&gt;cur_y += g-&gt;step;</div>
+<div class="line"><a name="l06150"></a><span class="lineno"> 6150</span>&#160;</div>
+<div class="line"><a name="l06151"></a><span class="lineno"> 6151</span>&#160; <span class="keywordflow">while</span> (g-&gt;cur_y &gt;= g-&gt;max_y &amp;&amp; g-&gt;parse &gt; 0) {</div>
+<div class="line"><a name="l06152"></a><span class="lineno"> 6152</span>&#160; g-&gt;step = (1 &lt;&lt; g-&gt;parse) * g-&gt;line_size;</div>
+<div class="line"><a name="l06153"></a><span class="lineno"> 6153</span>&#160; g-&gt;cur_y = g-&gt;start_y + (g-&gt;step &gt;&gt; 1);</div>
+<div class="line"><a name="l06154"></a><span class="lineno"> 6154</span>&#160; --g-&gt;parse;</div>
+<div class="line"><a name="l06155"></a><span class="lineno"> 6155</span>&#160; }</div>
+<div class="line"><a name="l06156"></a><span class="lineno"> 6156</span>&#160; }</div>
+<div class="line"><a name="l06157"></a><span class="lineno"> 6157</span>&#160;}</div>
+<div class="line"><a name="l06158"></a><span class="lineno"> 6158</span>&#160;</div>
+<div class="line"><a name="l06159"></a><span class="lineno"> 6159</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)</div>
+<div class="line"><a name="l06160"></a><span class="lineno"> 6160</span>&#160;{</div>
+<div class="line"><a name="l06161"></a><span class="lineno"> 6161</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> lzw_cs;</div>
+<div class="line"><a name="l06162"></a><span class="lineno"> 6162</span>&#160; stbi__int32 len, init_code;</div>
+<div class="line"><a name="l06163"></a><span class="lineno"> 6163</span>&#160; stbi__uint32 first;</div>
+<div class="line"><a name="l06164"></a><span class="lineno"> 6164</span>&#160; stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;</div>
+<div class="line"><a name="l06165"></a><span class="lineno"> 6165</span>&#160; stbi__gif_lzw *p;</div>
+<div class="line"><a name="l06166"></a><span class="lineno"> 6166</span>&#160;</div>
+<div class="line"><a name="l06167"></a><span class="lineno"> 6167</span>&#160; lzw_cs = stbi__get8(s);</div>
+<div class="line"><a name="l06168"></a><span class="lineno"> 6168</span>&#160; <span class="keywordflow">if</span> (lzw_cs &gt; 12) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l06169"></a><span class="lineno"> 6169</span>&#160; clear = 1 &lt;&lt; lzw_cs;</div>
+<div class="line"><a name="l06170"></a><span class="lineno"> 6170</span>&#160; first = 1;</div>
+<div class="line"><a name="l06171"></a><span class="lineno"> 6171</span>&#160; codesize = lzw_cs + 1;</div>
+<div class="line"><a name="l06172"></a><span class="lineno"> 6172</span>&#160; codemask = (1 &lt;&lt; codesize) - 1;</div>
+<div class="line"><a name="l06173"></a><span class="lineno"> 6173</span>&#160; bits = 0;</div>
+<div class="line"><a name="l06174"></a><span class="lineno"> 6174</span>&#160; valid_bits = 0;</div>
+<div class="line"><a name="l06175"></a><span class="lineno"> 6175</span>&#160; <span class="keywordflow">for</span> (init_code = 0; init_code &lt; clear; init_code++) {</div>
+<div class="line"><a name="l06176"></a><span class="lineno"> 6176</span>&#160; g-&gt;codes[init_code].prefix = -1;</div>
+<div class="line"><a name="l06177"></a><span class="lineno"> 6177</span>&#160; g-&gt;codes[init_code].first = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) init_code;</div>
+<div class="line"><a name="l06178"></a><span class="lineno"> 6178</span>&#160; g-&gt;codes[init_code].suffix = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) init_code;</div>
+<div class="line"><a name="l06179"></a><span class="lineno"> 6179</span>&#160; }</div>
+<div class="line"><a name="l06180"></a><span class="lineno"> 6180</span>&#160;</div>
+<div class="line"><a name="l06181"></a><span class="lineno"> 6181</span>&#160; <span class="comment">// support no starting clear code</span></div>
+<div class="line"><a name="l06182"></a><span class="lineno"> 6182</span>&#160; avail = clear+2;</div>
+<div class="line"><a name="l06183"></a><span class="lineno"> 6183</span>&#160; oldcode = -1;</div>
+<div class="line"><a name="l06184"></a><span class="lineno"> 6184</span>&#160;</div>
+<div class="line"><a name="l06185"></a><span class="lineno"> 6185</span>&#160; len = 0;</div>
+<div class="line"><a name="l06186"></a><span class="lineno"> 6186</span>&#160; <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l06187"></a><span class="lineno"> 6187</span>&#160; <span class="keywordflow">if</span> (valid_bits &lt; codesize) {</div>
+<div class="line"><a name="l06188"></a><span class="lineno"> 6188</span>&#160; <span class="keywordflow">if</span> (len == 0) {</div>
+<div class="line"><a name="l06189"></a><span class="lineno"> 6189</span>&#160; len = stbi__get8(s); <span class="comment">// start new block</span></div>
+<div class="line"><a name="l06190"></a><span class="lineno"> 6190</span>&#160; <span class="keywordflow">if</span> (len == 0)</div>
+<div class="line"><a name="l06191"></a><span class="lineno"> 6191</span>&#160; <span class="keywordflow">return</span> g-&gt;out;</div>
+<div class="line"><a name="l06192"></a><span class="lineno"> 6192</span>&#160; }</div>
+<div class="line"><a name="l06193"></a><span class="lineno"> 6193</span>&#160; --len;</div>
+<div class="line"><a name="l06194"></a><span class="lineno"> 6194</span>&#160; bits |= (stbi__int32) stbi__get8(s) &lt;&lt; valid_bits;</div>
+<div class="line"><a name="l06195"></a><span class="lineno"> 6195</span>&#160; valid_bits += 8;</div>
+<div class="line"><a name="l06196"></a><span class="lineno"> 6196</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06197"></a><span class="lineno"> 6197</span>&#160; stbi__int32 code = bits &amp; codemask;</div>
+<div class="line"><a name="l06198"></a><span class="lineno"> 6198</span>&#160; bits &gt;&gt;= codesize;</div>
+<div class="line"><a name="l06199"></a><span class="lineno"> 6199</span>&#160; valid_bits -= codesize;</div>
+<div class="line"><a name="l06200"></a><span class="lineno"> 6200</span>&#160; <span class="comment">// @OPTIMIZE: is there some way we can accelerate the non-clear path?</span></div>
+<div class="line"><a name="l06201"></a><span class="lineno"> 6201</span>&#160; <span class="keywordflow">if</span> (code == clear) { <span class="comment">// clear code</span></div>
+<div class="line"><a name="l06202"></a><span class="lineno"> 6202</span>&#160; codesize = lzw_cs + 1;</div>
+<div class="line"><a name="l06203"></a><span class="lineno"> 6203</span>&#160; codemask = (1 &lt;&lt; codesize) - 1;</div>
+<div class="line"><a name="l06204"></a><span class="lineno"> 6204</span>&#160; avail = clear + 2;</div>
+<div class="line"><a name="l06205"></a><span class="lineno"> 6205</span>&#160; oldcode = -1;</div>
+<div class="line"><a name="l06206"></a><span class="lineno"> 6206</span>&#160; first = 0;</div>
+<div class="line"><a name="l06207"></a><span class="lineno"> 6207</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code == clear + 1) { <span class="comment">// end of stream code</span></div>
+<div class="line"><a name="l06208"></a><span class="lineno"> 6208</span>&#160; stbi__skip(s, len);</div>
+<div class="line"><a name="l06209"></a><span class="lineno"> 6209</span>&#160; <span class="keywordflow">while</span> ((len = stbi__get8(s)) &gt; 0)</div>
+<div class="line"><a name="l06210"></a><span class="lineno"> 6210</span>&#160; stbi__skip(s,len);</div>
+<div class="line"><a name="l06211"></a><span class="lineno"> 6211</span>&#160; <span class="keywordflow">return</span> g-&gt;out;</div>
+<div class="line"><a name="l06212"></a><span class="lineno"> 6212</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code &lt;= avail) {</div>
+<div class="line"><a name="l06213"></a><span class="lineno"> 6213</span>&#160; <span class="keywordflow">if</span> (first) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;no clear code&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06214"></a><span class="lineno"> 6214</span>&#160;</div>
+<div class="line"><a name="l06215"></a><span class="lineno"> 6215</span>&#160; <span class="keywordflow">if</span> (oldcode &gt;= 0) {</div>
+<div class="line"><a name="l06216"></a><span class="lineno"> 6216</span>&#160; p = &amp;g-&gt;codes[avail++];</div>
+<div class="line"><a name="l06217"></a><span class="lineno"> 6217</span>&#160; <span class="keywordflow">if</span> (avail &gt; 4096) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too many codes&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06218"></a><span class="lineno"> 6218</span>&#160; p-&gt;prefix = (stbi__int16) oldcode;</div>
+<div class="line"><a name="l06219"></a><span class="lineno"> 6219</span>&#160; p-&gt;first = g-&gt;codes[oldcode].first;</div>
+<div class="line"><a name="l06220"></a><span class="lineno"> 6220</span>&#160; p-&gt;suffix = (code == avail) ? p-&gt;first : g-&gt;codes[code].first;</div>
+<div class="line"><a name="l06221"></a><span class="lineno"> 6221</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (code == avail)</div>
+<div class="line"><a name="l06222"></a><span class="lineno"> 6222</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;illegal code in raster&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06223"></a><span class="lineno"> 6223</span>&#160;</div>
+<div class="line"><a name="l06224"></a><span class="lineno"> 6224</span>&#160; stbi__out_gif_code(g, (stbi__uint16) code);</div>
+<div class="line"><a name="l06225"></a><span class="lineno"> 6225</span>&#160;</div>
+<div class="line"><a name="l06226"></a><span class="lineno"> 6226</span>&#160; <span class="keywordflow">if</span> ((avail &amp; codemask) == 0 &amp;&amp; avail &lt;= 0x0FFF) {</div>
+<div class="line"><a name="l06227"></a><span class="lineno"> 6227</span>&#160; codesize++;</div>
+<div class="line"><a name="l06228"></a><span class="lineno"> 6228</span>&#160; codemask = (1 &lt;&lt; codesize) - 1;</div>
+<div class="line"><a name="l06229"></a><span class="lineno"> 6229</span>&#160; }</div>
+<div class="line"><a name="l06230"></a><span class="lineno"> 6230</span>&#160;</div>
+<div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>&#160; oldcode = code;</div>
+<div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;illegal code in raster&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06234"></a><span class="lineno"> 6234</span>&#160; }</div>
+<div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>&#160; }</div>
+<div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>&#160; }</div>
+<div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>&#160;}</div>
+<div class="line"><a name="l06238"></a><span class="lineno"> 6238</span>&#160;</div>
+<div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__fill_gif_background(stbi__gif *g, <span class="keywordtype">int</span> x0, <span class="keywordtype">int</span> y0, <span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1)</div>
+<div class="line"><a name="l06240"></a><span class="lineno"> 6240</span>&#160;{</div>
+<div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>&#160; <span class="keywordtype">int</span> x, y;</div>
+<div class="line"><a name="l06242"></a><span class="lineno"> 6242</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *c = g-&gt;pal[g-&gt;bgindex];</div>
+<div class="line"><a name="l06243"></a><span class="lineno"> 6243</span>&#160; <span class="keywordflow">for</span> (y = y0; y &lt; y1; y += 4 * g-&gt;w) {</div>
+<div class="line"><a name="l06244"></a><span class="lineno"> 6244</span>&#160; <span class="keywordflow">for</span> (x = x0; x &lt; x1; x += 4) {</div>
+<div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *p = &amp;g-&gt;out[y + x];</div>
+<div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>&#160; p[0] = c[2];</div>
+<div class="line"><a name="l06247"></a><span class="lineno"> 6247</span>&#160; p[1] = c[1];</div>
+<div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>&#160; p[2] = c[0];</div>
+<div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>&#160; p[3] = 0;</div>
+<div class="line"><a name="l06250"></a><span class="lineno"> 6250</span>&#160; }</div>
+<div class="line"><a name="l06251"></a><span class="lineno"> 6251</span>&#160; }</div>
+<div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>&#160;}</div>
+<div class="line"><a name="l06253"></a><span class="lineno"> 6253</span>&#160;</div>
+<div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>&#160;<span class="comment">// this function is designed to support animated gifs, although stb_image doesn&#39;t support it</span></div>
+<div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>&#160;<span class="keyword">static</span> <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *stbi__gif_load_next(stbi__context *s, stbi__gif *g, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>&#160;{</div>
+<div class="line"><a name="l06257"></a><span class="lineno"> 6257</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *prev_out = 0;</div>
+<div class="line"><a name="l06259"></a><span class="lineno"> 6259</span>&#160;</div>
+<div class="line"><a name="l06260"></a><span class="lineno"> 6260</span>&#160; <span class="keywordflow">if</span> (g-&gt;out == 0 &amp;&amp; !stbi__gif_header(s, g, comp,0))</div>
+<div class="line"><a name="l06261"></a><span class="lineno"> 6261</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">// stbi__g_failure_reason set by stbi__gif_header</span></div>
+<div class="line"><a name="l06262"></a><span class="lineno"> 6262</span>&#160;</div>
+<div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(g-&gt;w, g-&gt;h, 4, 0))</div>
+<div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;GIF too large&quot;</span>);</div>
+<div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>&#160;</div>
+<div class="line"><a name="l06266"></a><span class="lineno"> 6266</span>&#160; prev_out = g-&gt;out;</div>
+<div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>&#160; g-&gt;out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(4, g-&gt;w, g-&gt;h, 0);</div>
+<div class="line"><a name="l06268"></a><span class="lineno"> 6268</span>&#160; <span class="keywordflow">if</span> (g-&gt;out == 0) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l06269"></a><span class="lineno"> 6269</span>&#160;</div>
+<div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>&#160; <span class="keywordflow">switch</span> ((g-&gt;eflags &amp; 0x1C) &gt;&gt; 2) {</div>
+<div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>&#160; <span class="keywordflow">case</span> 0: <span class="comment">// unspecified (also always used on 1st frame)</span></div>
+<div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>&#160; stbi__fill_gif_background(g, 0, 0, 4 * g-&gt;w, 4 * g-&gt;w * g-&gt;h);</div>
+<div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06274"></a><span class="lineno"> 6274</span>&#160; <span class="keywordflow">case</span> 1: <span class="comment">// do not dispose</span></div>
+<div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>&#160; <span class="keywordflow">if</span> (prev_out) memcpy(g-&gt;out, prev_out, 4 * g-&gt;w * g-&gt;h);</div>
+<div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>&#160; g-&gt;old_out = prev_out;</div>
+<div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>&#160; <span class="keywordflow">case</span> 2: <span class="comment">// dispose to background</span></div>
+<div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>&#160; <span class="keywordflow">if</span> (prev_out) memcpy(g-&gt;out, prev_out, 4 * g-&gt;w * g-&gt;h);</div>
+<div class="line"><a name="l06280"></a><span class="lineno"> 6280</span>&#160; stbi__fill_gif_background(g, g-&gt;start_x, g-&gt;start_y, g-&gt;max_x, g-&gt;max_y);</div>
+<div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>&#160; <span class="keywordflow">case</span> 3: <span class="comment">// dispose to previous</span></div>
+<div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>&#160; <span class="keywordflow">if</span> (g-&gt;old_out) {</div>
+<div class="line"><a name="l06284"></a><span class="lineno"> 6284</span>&#160; <span class="keywordflow">for</span> (i = g-&gt;start_y; i &lt; g-&gt;max_y; i += 4 * g-&gt;w)</div>
+<div class="line"><a name="l06285"></a><span class="lineno"> 6285</span>&#160; memcpy(&amp;g-&gt;out[i + g-&gt;start_x], &amp;g-&gt;old_out[i + g-&gt;start_x], g-&gt;max_x - g-&gt;start_x);</div>
+<div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>&#160; }</div>
+<div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>&#160; }</div>
+<div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>&#160;</div>
+<div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
+<div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>&#160; <span class="keywordflow">switch</span> (stbi__get8(s)) {</div>
+<div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>&#160; <span class="keywordflow">case</span> 0x2C: <span class="comment">/* Image Descriptor */</span></div>
+<div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>&#160; {</div>
+<div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>&#160; <span class="keywordtype">int</span> prev_trans = -1;</div>
+<div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>&#160; stbi__int32 x, y, w, h;</div>
+<div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *o;</div>
+<div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>&#160;</div>
+<div class="line"><a name="l06298"></a><span class="lineno"> 6298</span>&#160; x = stbi__get16le(s);</div>
+<div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>&#160; y = stbi__get16le(s);</div>
+<div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>&#160; w = stbi__get16le(s);</div>
+<div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>&#160; h = stbi__get16le(s);</div>
+<div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>&#160; <span class="keywordflow">if</span> (((x + w) &gt; (g-&gt;w)) || ((y + h) &gt; (g-&gt;h)))</div>
+<div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;bad Image Descriptor&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>&#160;</div>
+<div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>&#160; g-&gt;line_size = g-&gt;w * 4;</div>
+<div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>&#160; g-&gt;start_x = x * 4;</div>
+<div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>&#160; g-&gt;start_y = y * g-&gt;line_size;</div>
+<div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>&#160; g-&gt;max_x = g-&gt;start_x + w * 4;</div>
+<div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>&#160; g-&gt;max_y = g-&gt;start_y + h * g-&gt;line_size;</div>
+<div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>&#160; g-&gt;cur_x = g-&gt;start_x;</div>
+<div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>&#160; g-&gt;cur_y = g-&gt;start_y;</div>
+<div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>&#160;</div>
+<div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>&#160; g-&gt;lflags = stbi__get8(s);</div>
+<div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>&#160;</div>
+<div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>&#160; <span class="keywordflow">if</span> (g-&gt;lflags &amp; 0x40) {</div>
+<div class="line"><a name="l06316"></a><span class="lineno"> 6316</span>&#160; g-&gt;step = 8 * g-&gt;line_size; <span class="comment">// first interlaced spacing</span></div>
+<div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>&#160; g-&gt;parse = 3;</div>
+<div class="line"><a name="l06318"></a><span class="lineno"> 6318</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>&#160; g-&gt;step = g-&gt;line_size;</div>
+<div class="line"><a name="l06320"></a><span class="lineno"> 6320</span>&#160; g-&gt;parse = 0;</div>
+<div class="line"><a name="l06321"></a><span class="lineno"> 6321</span>&#160; }</div>
+<div class="line"><a name="l06322"></a><span class="lineno"> 6322</span>&#160;</div>
+<div class="line"><a name="l06323"></a><span class="lineno"> 6323</span>&#160; <span class="keywordflow">if</span> (g-&gt;lflags &amp; 0x80) {</div>
+<div class="line"><a name="l06324"></a><span class="lineno"> 6324</span>&#160; stbi__gif_parse_colortable(s,g-&gt;lpal, 2 &lt;&lt; (g-&gt;lflags &amp; 7), g-&gt;eflags &amp; 0x01 ? g-&gt;transparent : -1);</div>
+<div class="line"><a name="l06325"></a><span class="lineno"> 6325</span>&#160; g-&gt;color_table = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) g-&gt;lpal;</div>
+<div class="line"><a name="l06326"></a><span class="lineno"> 6326</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g-&gt;flags &amp; 0x80) {</div>
+<div class="line"><a name="l06327"></a><span class="lineno"> 6327</span>&#160; <span class="keywordflow">if</span> (g-&gt;transparent &gt;= 0 &amp;&amp; (g-&gt;eflags &amp; 0x01)) {</div>
+<div class="line"><a name="l06328"></a><span class="lineno"> 6328</span>&#160; prev_trans = g-&gt;pal[g-&gt;transparent][3];</div>
+<div class="line"><a name="l06329"></a><span class="lineno"> 6329</span>&#160; g-&gt;pal[g-&gt;transparent][3] = 0;</div>
+<div class="line"><a name="l06330"></a><span class="lineno"> 6330</span>&#160; }</div>
+<div class="line"><a name="l06331"></a><span class="lineno"> 6331</span>&#160; g-&gt;color_table = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) g-&gt;pal;</div>
+<div class="line"><a name="l06332"></a><span class="lineno"> 6332</span>&#160; } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l06333"></a><span class="lineno"> 6333</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;missing color table&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06334"></a><span class="lineno"> 6334</span>&#160;</div>
+<div class="line"><a name="l06335"></a><span class="lineno"> 6335</span>&#160; o = stbi__process_gif_raster(s, g);</div>
+<div class="line"><a name="l06336"></a><span class="lineno"> 6336</span>&#160; <span class="keywordflow">if</span> (o == NULL) <span class="keywordflow">return</span> NULL;</div>
+<div class="line"><a name="l06337"></a><span class="lineno"> 6337</span>&#160;</div>
+<div class="line"><a name="l06338"></a><span class="lineno"> 6338</span>&#160; <span class="keywordflow">if</span> (prev_trans != -1)</div>
+<div class="line"><a name="l06339"></a><span class="lineno"> 6339</span>&#160; g-&gt;pal[g-&gt;transparent][3] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) prev_trans;</div>
+<div class="line"><a name="l06340"></a><span class="lineno"> 6340</span>&#160;</div>
+<div class="line"><a name="l06341"></a><span class="lineno"> 6341</span>&#160; <span class="keywordflow">return</span> o;</div>
+<div class="line"><a name="l06342"></a><span class="lineno"> 6342</span>&#160; }</div>
+<div class="line"><a name="l06343"></a><span class="lineno"> 6343</span>&#160;</div>
+<div class="line"><a name="l06344"></a><span class="lineno"> 6344</span>&#160; <span class="keywordflow">case</span> 0x21: <span class="comment">// Comment Extension.</span></div>
+<div class="line"><a name="l06345"></a><span class="lineno"> 6345</span>&#160; {</div>
+<div class="line"><a name="l06346"></a><span class="lineno"> 6346</span>&#160; <span class="keywordtype">int</span> len;</div>
+<div class="line"><a name="l06347"></a><span class="lineno"> 6347</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) == 0xF9) { <span class="comment">// Graphic Control Extension.</span></div>
+<div class="line"><a name="l06348"></a><span class="lineno"> 6348</span>&#160; len = stbi__get8(s);</div>
+<div class="line"><a name="l06349"></a><span class="lineno"> 6349</span>&#160; <span class="keywordflow">if</span> (len == 4) {</div>
+<div class="line"><a name="l06350"></a><span class="lineno"> 6350</span>&#160; g-&gt;eflags = stbi__get8(s);</div>
+<div class="line"><a name="l06351"></a><span class="lineno"> 6351</span>&#160; g-&gt;delay = stbi__get16le(s);</div>
+<div class="line"><a name="l06352"></a><span class="lineno"> 6352</span>&#160; g-&gt;transparent = stbi__get8(s);</div>
+<div class="line"><a name="l06353"></a><span class="lineno"> 6353</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06354"></a><span class="lineno"> 6354</span>&#160; stbi__skip(s, len);</div>
+<div class="line"><a name="l06355"></a><span class="lineno"> 6355</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06356"></a><span class="lineno"> 6356</span>&#160; }</div>
+<div class="line"><a name="l06357"></a><span class="lineno"> 6357</span>&#160; }</div>
+<div class="line"><a name="l06358"></a><span class="lineno"> 6358</span>&#160; <span class="keywordflow">while</span> ((len = stbi__get8(s)) != 0)</div>
+<div class="line"><a name="l06359"></a><span class="lineno"> 6359</span>&#160; stbi__skip(s, len);</div>
+<div class="line"><a name="l06360"></a><span class="lineno"> 6360</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06361"></a><span class="lineno"> 6361</span>&#160; }</div>
+<div class="line"><a name="l06362"></a><span class="lineno"> 6362</span>&#160;</div>
+<div class="line"><a name="l06363"></a><span class="lineno"> 6363</span>&#160; <span class="keywordflow">case</span> 0x3B: <span class="comment">// gif stream termination code</span></div>
+<div class="line"><a name="l06364"></a><span class="lineno"> 6364</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) s; <span class="comment">// using &#39;1&#39; causes warning on some compilers</span></div>
+<div class="line"><a name="l06365"></a><span class="lineno"> 6365</span>&#160;</div>
+<div class="line"><a name="l06366"></a><span class="lineno"> 6366</span>&#160; <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l06367"></a><span class="lineno"> 6367</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;unknown code&quot;</span>, <span class="stringliteral">&quot;Corrupt GIF&quot;</span>);</div>
+<div class="line"><a name="l06368"></a><span class="lineno"> 6368</span>&#160; }</div>
+<div class="line"><a name="l06369"></a><span class="lineno"> 6369</span>&#160; }</div>
+<div class="line"><a name="l06370"></a><span class="lineno"> 6370</span>&#160;</div>
+<div class="line"><a name="l06371"></a><span class="lineno"> 6371</span>&#160; STBI_NOTUSED(req_comp);</div>
+<div class="line"><a name="l06372"></a><span class="lineno"> 6372</span>&#160;}</div>
+<div class="line"><a name="l06373"></a><span class="lineno"> 6373</span>&#160;</div>
+<div class="line"><a name="l06374"></a><span class="lineno"> 6374</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__gif_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l06375"></a><span class="lineno"> 6375</span>&#160;{</div>
+<div class="line"><a name="l06376"></a><span class="lineno"> 6376</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *u = 0;</div>
+<div class="line"><a name="l06377"></a><span class="lineno"> 6377</span>&#160; stbi__gif* g = (stbi__gif*) stbi__malloc(<span class="keyword">sizeof</span>(stbi__gif));</div>
+<div class="line"><a name="l06378"></a><span class="lineno"> 6378</span>&#160; memset(g, 0, <span class="keyword">sizeof</span>(*g));</div>
+<div class="line"><a name="l06379"></a><span class="lineno"> 6379</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l06380"></a><span class="lineno"> 6380</span>&#160;</div>
+<div class="line"><a name="l06381"></a><span class="lineno"> 6381</span>&#160; u = stbi__gif_load_next(s, g, comp, req_comp);</div>
+<div class="line"><a name="l06382"></a><span class="lineno"> 6382</span>&#160; <span class="keywordflow">if</span> (u == (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) s) u = 0; <span class="comment">// end of animated gif marker</span></div>
+<div class="line"><a name="l06383"></a><span class="lineno"> 6383</span>&#160; <span class="keywordflow">if</span> (u) {</div>
+<div class="line"><a name="l06384"></a><span class="lineno"> 6384</span>&#160; *x = g-&gt;w;</div>
+<div class="line"><a name="l06385"></a><span class="lineno"> 6385</span>&#160; *y = g-&gt;h;</div>
+<div class="line"><a name="l06386"></a><span class="lineno"> 6386</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != 4)</div>
+<div class="line"><a name="l06387"></a><span class="lineno"> 6387</span>&#160; u = stbi__convert_format(u, 4, req_comp, g-&gt;w, g-&gt;h);</div>
+<div class="line"><a name="l06388"></a><span class="lineno"> 6388</span>&#160; }</div>
+<div class="line"><a name="l06389"></a><span class="lineno"> 6389</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g-&gt;out)</div>
+<div class="line"><a name="l06390"></a><span class="lineno"> 6390</span>&#160; STBI_FREE(g-&gt;out);</div>
+<div class="line"><a name="l06391"></a><span class="lineno"> 6391</span>&#160; STBI_FREE(g);</div>
+<div class="line"><a name="l06392"></a><span class="lineno"> 6392</span>&#160; <span class="keywordflow">return</span> u;</div>
+<div class="line"><a name="l06393"></a><span class="lineno"> 6393</span>&#160;}</div>
+<div class="line"><a name="l06394"></a><span class="lineno"> 6394</span>&#160;</div>
+<div class="line"><a name="l06395"></a><span class="lineno"> 6395</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__gif_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06396"></a><span class="lineno"> 6396</span>&#160;{</div>
+<div class="line"><a name="l06397"></a><span class="lineno"> 6397</span>&#160; <span class="keywordflow">return</span> stbi__gif_info_raw(s,x,y,comp);</div>
+<div class="line"><a name="l06398"></a><span class="lineno"> 6398</span>&#160;}</div>
+<div class="line"><a name="l06399"></a><span class="lineno"> 6399</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06400"></a><span class="lineno"> 6400</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06401"></a><span class="lineno"> 6401</span>&#160;<span class="comment">// *************************************************************************************************</span></div>
+<div class="line"><a name="l06402"></a><span class="lineno"> 6402</span>&#160;<span class="comment">// Radiance RGBE HDR loader</span></div>
+<div class="line"><a name="l06403"></a><span class="lineno"> 6403</span>&#160;<span class="comment">// originally by Nicolas Schulz</span></div>
+<div class="line"><a name="l06404"></a><span class="lineno"> 6404</span>&#160;<span class="preprocessor">#ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l06405"></a><span class="lineno"> 6405</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__hdr_test_core(stbi__context *s, <span class="keyword">const</span> <span class="keywordtype">char</span> *signature)</div>
+<div class="line"><a name="l06406"></a><span class="lineno"> 6406</span>&#160;{</div>
+<div class="line"><a name="l06407"></a><span class="lineno"> 6407</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l06408"></a><span class="lineno"> 6408</span>&#160; <span class="keywordflow">for</span> (i=0; signature[i]; ++i)</div>
+<div class="line"><a name="l06409"></a><span class="lineno"> 6409</span>&#160; <span class="keywordflow">if</span> (stbi__get8(s) != signature[i])</div>
+<div class="line"><a name="l06410"></a><span class="lineno"> 6410</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06411"></a><span class="lineno"> 6411</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06412"></a><span class="lineno"> 6412</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06413"></a><span class="lineno"> 6413</span>&#160;}</div>
+<div class="line"><a name="l06414"></a><span class="lineno"> 6414</span>&#160;</div>
+<div class="line"><a name="l06415"></a><span class="lineno"> 6415</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__hdr_test(stbi__context* s)</div>
+<div class="line"><a name="l06416"></a><span class="lineno"> 6416</span>&#160;{</div>
+<div class="line"><a name="l06417"></a><span class="lineno"> 6417</span>&#160; <span class="keywordtype">int</span> r = stbi__hdr_test_core(s, <span class="stringliteral">&quot;#?RADIANCE\n&quot;</span>);</div>
+<div class="line"><a name="l06418"></a><span class="lineno"> 6418</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06419"></a><span class="lineno"> 6419</span>&#160; <span class="keywordflow">if</span>(!r) {</div>
+<div class="line"><a name="l06420"></a><span class="lineno"> 6420</span>&#160; r = stbi__hdr_test_core(s, <span class="stringliteral">&quot;#?RGBE\n&quot;</span>);</div>
+<div class="line"><a name="l06421"></a><span class="lineno"> 6421</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06422"></a><span class="lineno"> 6422</span>&#160; }</div>
+<div class="line"><a name="l06423"></a><span class="lineno"> 6423</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l06424"></a><span class="lineno"> 6424</span>&#160;}</div>
+<div class="line"><a name="l06425"></a><span class="lineno"> 6425</span>&#160;</div>
+<div class="line"><a name="l06426"></a><span class="lineno"> 6426</span>&#160;<span class="preprocessor">#define STBI__HDR_BUFLEN 1024</span></div>
+<div class="line"><a name="l06427"></a><span class="lineno"> 6427</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">char</span> *stbi__hdr_gettoken(stbi__context *z, <span class="keywordtype">char</span> *buffer)</div>
+<div class="line"><a name="l06428"></a><span class="lineno"> 6428</span>&#160;{</div>
+<div class="line"><a name="l06429"></a><span class="lineno"> 6429</span>&#160; <span class="keywordtype">int</span> len=0;</div>
+<div class="line"><a name="l06430"></a><span class="lineno"> 6430</span>&#160; <span class="keywordtype">char</span> c = <span class="charliteral">&#39;\0&#39;</span>;</div>
+<div class="line"><a name="l06431"></a><span class="lineno"> 6431</span>&#160;</div>
+<div class="line"><a name="l06432"></a><span class="lineno"> 6432</span>&#160; c = (char) stbi__get8(z);</div>
+<div class="line"><a name="l06433"></a><span class="lineno"> 6433</span>&#160;</div>
+<div class="line"><a name="l06434"></a><span class="lineno"> 6434</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(z) &amp;&amp; c != <span class="charliteral">&#39;\n&#39;</span>) {</div>
+<div class="line"><a name="l06435"></a><span class="lineno"> 6435</span>&#160; buffer[len++] = c;</div>
+<div class="line"><a name="l06436"></a><span class="lineno"> 6436</span>&#160; <span class="keywordflow">if</span> (len == STBI__HDR_BUFLEN-1) {</div>
+<div class="line"><a name="l06437"></a><span class="lineno"> 6437</span>&#160; <span class="comment">// flush to end of line</span></div>
+<div class="line"><a name="l06438"></a><span class="lineno"> 6438</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(z) &amp;&amp; stbi__get8(z) != <span class="charliteral">&#39;\n&#39;</span>)</div>
+<div class="line"><a name="l06439"></a><span class="lineno"> 6439</span>&#160; ;</div>
+<div class="line"><a name="l06440"></a><span class="lineno"> 6440</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06441"></a><span class="lineno"> 6441</span>&#160; }</div>
+<div class="line"><a name="l06442"></a><span class="lineno"> 6442</span>&#160; c = (char) stbi__get8(z);</div>
+<div class="line"><a name="l06443"></a><span class="lineno"> 6443</span>&#160; }</div>
+<div class="line"><a name="l06444"></a><span class="lineno"> 6444</span>&#160;</div>
+<div class="line"><a name="l06445"></a><span class="lineno"> 6445</span>&#160; buffer[len] = 0;</div>
+<div class="line"><a name="l06446"></a><span class="lineno"> 6446</span>&#160; <span class="keywordflow">return</span> buffer;</div>
+<div class="line"><a name="l06447"></a><span class="lineno"> 6447</span>&#160;}</div>
+<div class="line"><a name="l06448"></a><span class="lineno"> 6448</span>&#160;</div>
+<div class="line"><a name="l06449"></a><span class="lineno"> 6449</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__hdr_convert(<span class="keywordtype">float</span> *output, <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *input, <span class="keywordtype">int</span> req_comp)</div>
+<div class="line"><a name="l06450"></a><span class="lineno"> 6450</span>&#160;{</div>
+<div class="line"><a name="l06451"></a><span class="lineno"> 6451</span>&#160; <span class="keywordflow">if</span> ( input[3] != 0 ) {</div>
+<div class="line"><a name="l06452"></a><span class="lineno"> 6452</span>&#160; <span class="keywordtype">float</span> f1;</div>
+<div class="line"><a name="l06453"></a><span class="lineno"> 6453</span>&#160; <span class="comment">// Exponent</span></div>
+<div class="line"><a name="l06454"></a><span class="lineno"> 6454</span>&#160; f1 = (float) ldexp(1.0f, input[3] - (<span class="keywordtype">int</span>)(128 + 8));</div>
+<div class="line"><a name="l06455"></a><span class="lineno"> 6455</span>&#160; <span class="keywordflow">if</span> (req_comp &lt;= 2)</div>
+<div class="line"><a name="l06456"></a><span class="lineno"> 6456</span>&#160; output[0] = (input[0] + input[1] + input[2]) * f1 / 3;</div>
+<div class="line"><a name="l06457"></a><span class="lineno"> 6457</span>&#160; <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06458"></a><span class="lineno"> 6458</span>&#160; output[0] = input[0] * f1;</div>
+<div class="line"><a name="l06459"></a><span class="lineno"> 6459</span>&#160; output[1] = input[1] * f1;</div>
+<div class="line"><a name="l06460"></a><span class="lineno"> 6460</span>&#160; output[2] = input[2] * f1;</div>
+<div class="line"><a name="l06461"></a><span class="lineno"> 6461</span>&#160; }</div>
+<div class="line"><a name="l06462"></a><span class="lineno"> 6462</span>&#160; <span class="keywordflow">if</span> (req_comp == 2) output[1] = 1;</div>
+<div class="line"><a name="l06463"></a><span class="lineno"> 6463</span>&#160; <span class="keywordflow">if</span> (req_comp == 4) output[3] = 1;</div>
+<div class="line"><a name="l06464"></a><span class="lineno"> 6464</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06465"></a><span class="lineno"> 6465</span>&#160; <span class="keywordflow">switch</span> (req_comp) {</div>
+<div class="line"><a name="l06466"></a><span class="lineno"> 6466</span>&#160; <span class="keywordflow">case</span> 4: output[3] = 1; <span class="comment">/* fallthrough */</span></div>
+<div class="line"><a name="l06467"></a><span class="lineno"> 6467</span>&#160; <span class="keywordflow">case</span> 3: output[0] = output[1] = output[2] = 0;</div>
+<div class="line"><a name="l06468"></a><span class="lineno"> 6468</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06469"></a><span class="lineno"> 6469</span>&#160; <span class="keywordflow">case</span> 2: output[1] = 1; <span class="comment">/* fallthrough */</span></div>
+<div class="line"><a name="l06470"></a><span class="lineno"> 6470</span>&#160; <span class="keywordflow">case</span> 1: output[0] = 0;</div>
+<div class="line"><a name="l06471"></a><span class="lineno"> 6471</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06472"></a><span class="lineno"> 6472</span>&#160; }</div>
+<div class="line"><a name="l06473"></a><span class="lineno"> 6473</span>&#160; }</div>
+<div class="line"><a name="l06474"></a><span class="lineno"> 6474</span>&#160;}</div>
+<div class="line"><a name="l06475"></a><span class="lineno"> 6475</span>&#160;</div>
+<div class="line"><a name="l06476"></a><span class="lineno"> 6476</span>&#160;<span class="keyword">static</span> <span class="keywordtype">float</span> *stbi__hdr_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l06477"></a><span class="lineno"> 6477</span>&#160;{</div>
+<div class="line"><a name="l06478"></a><span class="lineno"> 6478</span>&#160; <span class="keywordtype">char</span> buffer[STBI__HDR_BUFLEN];</div>
+<div class="line"><a name="l06479"></a><span class="lineno"> 6479</span>&#160; <span class="keywordtype">char</span> *token;</div>
+<div class="line"><a name="l06480"></a><span class="lineno"> 6480</span>&#160; <span class="keywordtype">int</span> valid = 0;</div>
+<div class="line"><a name="l06481"></a><span class="lineno"> 6481</span>&#160; <span class="keywordtype">int</span> width, height;</div>
+<div class="line"><a name="l06482"></a><span class="lineno"> 6482</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *scanline;</div>
+<div class="line"><a name="l06483"></a><span class="lineno"> 6483</span>&#160; <span class="keywordtype">float</span> *hdr_data;</div>
+<div class="line"><a name="l06484"></a><span class="lineno"> 6484</span>&#160; <span class="keywordtype">int</span> len;</div>
+<div class="line"><a name="l06485"></a><span class="lineno"> 6485</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> count, value;</div>
+<div class="line"><a name="l06486"></a><span class="lineno"> 6486</span>&#160; <span class="keywordtype">int</span> i, j, k, c1,c2, z;</div>
+<div class="line"><a name="l06487"></a><span class="lineno"> 6487</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *headerToken;</div>
+<div class="line"><a name="l06488"></a><span class="lineno"> 6488</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l06489"></a><span class="lineno"> 6489</span>&#160;</div>
+<div class="line"><a name="l06490"></a><span class="lineno"> 6490</span>&#160; <span class="comment">// Check identifier</span></div>
+<div class="line"><a name="l06491"></a><span class="lineno"> 6491</span>&#160; headerToken = stbi__hdr_gettoken(s,buffer);</div>
+<div class="line"><a name="l06492"></a><span class="lineno"> 6492</span>&#160; <span class="keywordflow">if</span> (strcmp(headerToken, <span class="stringliteral">&quot;#?RADIANCE&quot;</span>) != 0 &amp;&amp; strcmp(headerToken, <span class="stringliteral">&quot;#?RGBE&quot;</span>) != 0)</div>
+<div class="line"><a name="l06493"></a><span class="lineno"> 6493</span>&#160; <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;not HDR&quot;</span>, <span class="stringliteral">&quot;Corrupt HDR image&quot;</span>);</div>
+<div class="line"><a name="l06494"></a><span class="lineno"> 6494</span>&#160;</div>
+<div class="line"><a name="l06495"></a><span class="lineno"> 6495</span>&#160; <span class="comment">// Parse header</span></div>
+<div class="line"><a name="l06496"></a><span class="lineno"> 6496</span>&#160; <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l06497"></a><span class="lineno"> 6497</span>&#160; token = stbi__hdr_gettoken(s,buffer);</div>
+<div class="line"><a name="l06498"></a><span class="lineno"> 6498</span>&#160; <span class="keywordflow">if</span> (token[0] == 0) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06499"></a><span class="lineno"> 6499</span>&#160; <span class="keywordflow">if</span> (strcmp(token, <span class="stringliteral">&quot;FORMAT=32-bit_rle_rgbe&quot;</span>) == 0) valid = 1;</div>
+<div class="line"><a name="l06500"></a><span class="lineno"> 6500</span>&#160; }</div>
+<div class="line"><a name="l06501"></a><span class="lineno"> 6501</span>&#160;</div>
+<div class="line"><a name="l06502"></a><span class="lineno"> 6502</span>&#160; <span class="keywordflow">if</span> (!valid) <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;unsupported format&quot;</span>, <span class="stringliteral">&quot;Unsupported HDR format&quot;</span>);</div>
+<div class="line"><a name="l06503"></a><span class="lineno"> 6503</span>&#160;</div>
+<div class="line"><a name="l06504"></a><span class="lineno"> 6504</span>&#160; <span class="comment">// Parse width and height</span></div>
+<div class="line"><a name="l06505"></a><span class="lineno"> 6505</span>&#160; <span class="comment">// can&#39;t use sscanf() if we&#39;re not using stdio!</span></div>
+<div class="line"><a name="l06506"></a><span class="lineno"> 6506</span>&#160; token = stbi__hdr_gettoken(s,buffer);</div>
+<div class="line"><a name="l06507"></a><span class="lineno"> 6507</span>&#160; <span class="keywordflow">if</span> (strncmp(token, <span class="stringliteral">&quot;-Y &quot;</span>, 3)) <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;unsupported data layout&quot;</span>, <span class="stringliteral">&quot;Unsupported HDR format&quot;</span>);</div>
+<div class="line"><a name="l06508"></a><span class="lineno"> 6508</span>&#160; token += 3;</div>
+<div class="line"><a name="l06509"></a><span class="lineno"> 6509</span>&#160; height = (int) strtol(token, &amp;token, 10);</div>
+<div class="line"><a name="l06510"></a><span class="lineno"> 6510</span>&#160; <span class="keywordflow">while</span> (*token == <span class="charliteral">&#39; &#39;</span>) ++token;</div>
+<div class="line"><a name="l06511"></a><span class="lineno"> 6511</span>&#160; <span class="keywordflow">if</span> (strncmp(token, <span class="stringliteral">&quot;+X &quot;</span>, 3)) <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;unsupported data layout&quot;</span>, <span class="stringliteral">&quot;Unsupported HDR format&quot;</span>);</div>
+<div class="line"><a name="l06512"></a><span class="lineno"> 6512</span>&#160; token += 3;</div>
+<div class="line"><a name="l06513"></a><span class="lineno"> 6513</span>&#160; width = (int) strtol(token, NULL, 10);</div>
+<div class="line"><a name="l06514"></a><span class="lineno"> 6514</span>&#160;</div>
+<div class="line"><a name="l06515"></a><span class="lineno"> 6515</span>&#160; *x = width;</div>
+<div class="line"><a name="l06516"></a><span class="lineno"> 6516</span>&#160; *y = height;</div>
+<div class="line"><a name="l06517"></a><span class="lineno"> 6517</span>&#160;</div>
+<div class="line"><a name="l06518"></a><span class="lineno"> 6518</span>&#160; <span class="keywordflow">if</span> (comp) *comp = 3;</div>
+<div class="line"><a name="l06519"></a><span class="lineno"> 6519</span>&#160; <span class="keywordflow">if</span> (req_comp == 0) req_comp = 3;</div>
+<div class="line"><a name="l06520"></a><span class="lineno"> 6520</span>&#160;</div>
+<div class="line"><a name="l06521"></a><span class="lineno"> 6521</span>&#160; <span class="keywordflow">if</span> (!stbi__mad4sizes_valid(width, height, req_comp, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), 0))</div>
+<div class="line"><a name="l06522"></a><span class="lineno"> 6522</span>&#160; <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;HDR image is too large&quot;</span>);</div>
+<div class="line"><a name="l06523"></a><span class="lineno"> 6523</span>&#160;</div>
+<div class="line"><a name="l06524"></a><span class="lineno"> 6524</span>&#160; <span class="comment">// Read data</span></div>
+<div class="line"><a name="l06525"></a><span class="lineno"> 6525</span>&#160; hdr_data = (<span class="keywordtype">float</span> *) stbi__malloc_mad4(width, height, req_comp, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), 0);</div>
+<div class="line"><a name="l06526"></a><span class="lineno"> 6526</span>&#160; <span class="keywordflow">if</span> (!hdr_data)</div>
+<div class="line"><a name="l06527"></a><span class="lineno"> 6527</span>&#160; <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l06528"></a><span class="lineno"> 6528</span>&#160;</div>
+<div class="line"><a name="l06529"></a><span class="lineno"> 6529</span>&#160; <span class="comment">// Load image data</span></div>
+<div class="line"><a name="l06530"></a><span class="lineno"> 6530</span>&#160; <span class="comment">// image data is stored as some number of sca</span></div>
+<div class="line"><a name="l06531"></a><span class="lineno"> 6531</span>&#160; <span class="keywordflow">if</span> ( width &lt; 8 || width &gt;= 32768) {</div>
+<div class="line"><a name="l06532"></a><span class="lineno"> 6532</span>&#160; <span class="comment">// Read flat data</span></div>
+<div class="line"><a name="l06533"></a><span class="lineno"> 6533</span>&#160; <span class="keywordflow">for</span> (j=0; j &lt; height; ++j) {</div>
+<div class="line"><a name="l06534"></a><span class="lineno"> 6534</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; width; ++i) {</div>
+<div class="line"><a name="l06535"></a><span class="lineno"> 6535</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> rgbe[4];</div>
+<div class="line"><a name="l06536"></a><span class="lineno"> 6536</span>&#160; main_decode_loop:</div>
+<div class="line"><a name="l06537"></a><span class="lineno"> 6537</span>&#160; stbi__getn(s, rgbe, 4);</div>
+<div class="line"><a name="l06538"></a><span class="lineno"> 6538</span>&#160; stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp);</div>
+<div class="line"><a name="l06539"></a><span class="lineno"> 6539</span>&#160; }</div>
+<div class="line"><a name="l06540"></a><span class="lineno"> 6540</span>&#160; }</div>
+<div class="line"><a name="l06541"></a><span class="lineno"> 6541</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06542"></a><span class="lineno"> 6542</span>&#160; <span class="comment">// Read RLE-encoded data</span></div>
+<div class="line"><a name="l06543"></a><span class="lineno"> 6543</span>&#160; scanline = NULL;</div>
+<div class="line"><a name="l06544"></a><span class="lineno"> 6544</span>&#160;</div>
+<div class="line"><a name="l06545"></a><span class="lineno"> 6545</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; height; ++j) {</div>
+<div class="line"><a name="l06546"></a><span class="lineno"> 6546</span>&#160; c1 = stbi__get8(s);</div>
+<div class="line"><a name="l06547"></a><span class="lineno"> 6547</span>&#160; c2 = stbi__get8(s);</div>
+<div class="line"><a name="l06548"></a><span class="lineno"> 6548</span>&#160; len = stbi__get8(s);</div>
+<div class="line"><a name="l06549"></a><span class="lineno"> 6549</span>&#160; <span class="keywordflow">if</span> (c1 != 2 || c2 != 2 || (len &amp; 0x80)) {</div>
+<div class="line"><a name="l06550"></a><span class="lineno"> 6550</span>&#160; <span class="comment">// not run-length encoded, so we have to actually use THIS data as a decoded</span></div>
+<div class="line"><a name="l06551"></a><span class="lineno"> 6551</span>&#160; <span class="comment">// pixel (note this can&#39;t be a valid pixel--one of RGB must be &gt;= 128)</span></div>
+<div class="line"><a name="l06552"></a><span class="lineno"> 6552</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> rgbe[4];</div>
+<div class="line"><a name="l06553"></a><span class="lineno"> 6553</span>&#160; rgbe[0] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) c1;</div>
+<div class="line"><a name="l06554"></a><span class="lineno"> 6554</span>&#160; rgbe[1] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) c2;</div>
+<div class="line"><a name="l06555"></a><span class="lineno"> 6555</span>&#160; rgbe[2] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) len;</div>
+<div class="line"><a name="l06556"></a><span class="lineno"> 6556</span>&#160; rgbe[3] = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a>) stbi__get8(s);</div>
+<div class="line"><a name="l06557"></a><span class="lineno"> 6557</span>&#160; stbi__hdr_convert(hdr_data, rgbe, req_comp);</div>
+<div class="line"><a name="l06558"></a><span class="lineno"> 6558</span>&#160; i = 1;</div>
+<div class="line"><a name="l06559"></a><span class="lineno"> 6559</span>&#160; j = 0;</div>
+<div class="line"><a name="l06560"></a><span class="lineno"> 6560</span>&#160; STBI_FREE(scanline);</div>
+<div class="line"><a name="l06561"></a><span class="lineno"> 6561</span>&#160; <span class="keywordflow">goto</span> main_decode_loop; <span class="comment">// yes, this makes no sense</span></div>
+<div class="line"><a name="l06562"></a><span class="lineno"> 6562</span>&#160; }</div>
+<div class="line"><a name="l06563"></a><span class="lineno"> 6563</span>&#160; len &lt;&lt;= 8;</div>
+<div class="line"><a name="l06564"></a><span class="lineno"> 6564</span>&#160; len |= stbi__get8(s);</div>
+<div class="line"><a name="l06565"></a><span class="lineno"> 6565</span>&#160; <span class="keywordflow">if</span> (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;invalid decoded scanline length&quot;</span>, <span class="stringliteral">&quot;corrupt HDR&quot;</span>); }</div>
+<div class="line"><a name="l06566"></a><span class="lineno"> 6566</span>&#160; <span class="keywordflow">if</span> (scanline == NULL) {</div>
+<div class="line"><a name="l06567"></a><span class="lineno"> 6567</span>&#160; scanline = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad2(width, 4, 0);</div>
+<div class="line"><a name="l06568"></a><span class="lineno"> 6568</span>&#160; <span class="keywordflow">if</span> (!scanline) {</div>
+<div class="line"><a name="l06569"></a><span class="lineno"> 6569</span>&#160; STBI_FREE(hdr_data);</div>
+<div class="line"><a name="l06570"></a><span class="lineno"> 6570</span>&#160; <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l06571"></a><span class="lineno"> 6571</span>&#160; }</div>
+<div class="line"><a name="l06572"></a><span class="lineno"> 6572</span>&#160; }</div>
+<div class="line"><a name="l06573"></a><span class="lineno"> 6573</span>&#160;</div>
+<div class="line"><a name="l06574"></a><span class="lineno"> 6574</span>&#160; <span class="keywordflow">for</span> (k = 0; k &lt; 4; ++k) {</div>
+<div class="line"><a name="l06575"></a><span class="lineno"> 6575</span>&#160; <span class="keywordtype">int</span> nleft;</div>
+<div class="line"><a name="l06576"></a><span class="lineno"> 6576</span>&#160; i = 0;</div>
+<div class="line"><a name="l06577"></a><span class="lineno"> 6577</span>&#160; <span class="keywordflow">while</span> ((nleft = width - i) &gt; 0) {</div>
+<div class="line"><a name="l06578"></a><span class="lineno"> 6578</span>&#160; count = stbi__get8(s);</div>
+<div class="line"><a name="l06579"></a><span class="lineno"> 6579</span>&#160; <span class="keywordflow">if</span> (count &gt; 128) {</div>
+<div class="line"><a name="l06580"></a><span class="lineno"> 6580</span>&#160; <span class="comment">// Run</span></div>
+<div class="line"><a name="l06581"></a><span class="lineno"> 6581</span>&#160; value = stbi__get8(s);</div>
+<div class="line"><a name="l06582"></a><span class="lineno"> 6582</span>&#160; count -= 128;</div>
+<div class="line"><a name="l06583"></a><span class="lineno"> 6583</span>&#160; <span class="keywordflow">if</span> (count &gt; nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;corrupt&quot;</span>, <span class="stringliteral">&quot;bad RLE data in HDR&quot;</span>); }</div>
+<div class="line"><a name="l06584"></a><span class="lineno"> 6584</span>&#160; <span class="keywordflow">for</span> (z = 0; z &lt; count; ++z)</div>
+<div class="line"><a name="l06585"></a><span class="lineno"> 6585</span>&#160; scanline[i++ * 4 + k] = value;</div>
+<div class="line"><a name="l06586"></a><span class="lineno"> 6586</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l06587"></a><span class="lineno"> 6587</span>&#160; <span class="comment">// Dump</span></div>
+<div class="line"><a name="l06588"></a><span class="lineno"> 6588</span>&#160; <span class="keywordflow">if</span> (count &gt; nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); <span class="keywordflow">return</span> stbi__errpf(<span class="stringliteral">&quot;corrupt&quot;</span>, <span class="stringliteral">&quot;bad RLE data in HDR&quot;</span>); }</div>
+<div class="line"><a name="l06589"></a><span class="lineno"> 6589</span>&#160; <span class="keywordflow">for</span> (z = 0; z &lt; count; ++z)</div>
+<div class="line"><a name="l06590"></a><span class="lineno"> 6590</span>&#160; scanline[i++ * 4 + k] = stbi__get8(s);</div>
+<div class="line"><a name="l06591"></a><span class="lineno"> 6591</span>&#160; }</div>
+<div class="line"><a name="l06592"></a><span class="lineno"> 6592</span>&#160; }</div>
+<div class="line"><a name="l06593"></a><span class="lineno"> 6593</span>&#160; }</div>
+<div class="line"><a name="l06594"></a><span class="lineno"> 6594</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; width; ++i)</div>
+<div class="line"><a name="l06595"></a><span class="lineno"> 6595</span>&#160; stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp);</div>
+<div class="line"><a name="l06596"></a><span class="lineno"> 6596</span>&#160; }</div>
+<div class="line"><a name="l06597"></a><span class="lineno"> 6597</span>&#160; <span class="keywordflow">if</span> (scanline)</div>
+<div class="line"><a name="l06598"></a><span class="lineno"> 6598</span>&#160; STBI_FREE(scanline);</div>
+<div class="line"><a name="l06599"></a><span class="lineno"> 6599</span>&#160; }</div>
+<div class="line"><a name="l06600"></a><span class="lineno"> 6600</span>&#160;</div>
+<div class="line"><a name="l06601"></a><span class="lineno"> 6601</span>&#160; <span class="keywordflow">return</span> hdr_data;</div>
+<div class="line"><a name="l06602"></a><span class="lineno"> 6602</span>&#160;}</div>
+<div class="line"><a name="l06603"></a><span class="lineno"> 6603</span>&#160;</div>
+<div class="line"><a name="l06604"></a><span class="lineno"> 6604</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__hdr_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06605"></a><span class="lineno"> 6605</span>&#160;{</div>
+<div class="line"><a name="l06606"></a><span class="lineno"> 6606</span>&#160; <span class="keywordtype">char</span> buffer[STBI__HDR_BUFLEN];</div>
+<div class="line"><a name="l06607"></a><span class="lineno"> 6607</span>&#160; <span class="keywordtype">char</span> *token;</div>
+<div class="line"><a name="l06608"></a><span class="lineno"> 6608</span>&#160; <span class="keywordtype">int</span> valid = 0;</div>
+<div class="line"><a name="l06609"></a><span class="lineno"> 6609</span>&#160; <span class="keywordtype">int</span> dummy;</div>
+<div class="line"><a name="l06610"></a><span class="lineno"> 6610</span>&#160;</div>
+<div class="line"><a name="l06611"></a><span class="lineno"> 6611</span>&#160; <span class="keywordflow">if</span> (!x) x = &amp;dummy;</div>
+<div class="line"><a name="l06612"></a><span class="lineno"> 6612</span>&#160; <span class="keywordflow">if</span> (!y) y = &amp;dummy;</div>
+<div class="line"><a name="l06613"></a><span class="lineno"> 6613</span>&#160; <span class="keywordflow">if</span> (!comp) comp = &amp;dummy;</div>
+<div class="line"><a name="l06614"></a><span class="lineno"> 6614</span>&#160;</div>
+<div class="line"><a name="l06615"></a><span class="lineno"> 6615</span>&#160; <span class="keywordflow">if</span> (stbi__hdr_test(s) == 0) {</div>
+<div class="line"><a name="l06616"></a><span class="lineno"> 6616</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06617"></a><span class="lineno"> 6617</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06618"></a><span class="lineno"> 6618</span>&#160; }</div>
+<div class="line"><a name="l06619"></a><span class="lineno"> 6619</span>&#160;</div>
+<div class="line"><a name="l06620"></a><span class="lineno"> 6620</span>&#160; <span class="keywordflow">for</span>(;;) {</div>
+<div class="line"><a name="l06621"></a><span class="lineno"> 6621</span>&#160; token = stbi__hdr_gettoken(s,buffer);</div>
+<div class="line"><a name="l06622"></a><span class="lineno"> 6622</span>&#160; <span class="keywordflow">if</span> (token[0] == 0) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06623"></a><span class="lineno"> 6623</span>&#160; <span class="keywordflow">if</span> (strcmp(token, <span class="stringliteral">&quot;FORMAT=32-bit_rle_rgbe&quot;</span>) == 0) valid = 1;</div>
+<div class="line"><a name="l06624"></a><span class="lineno"> 6624</span>&#160; }</div>
+<div class="line"><a name="l06625"></a><span class="lineno"> 6625</span>&#160;</div>
+<div class="line"><a name="l06626"></a><span class="lineno"> 6626</span>&#160; <span class="keywordflow">if</span> (!valid) {</div>
+<div class="line"><a name="l06627"></a><span class="lineno"> 6627</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06628"></a><span class="lineno"> 6628</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06629"></a><span class="lineno"> 6629</span>&#160; }</div>
+<div class="line"><a name="l06630"></a><span class="lineno"> 6630</span>&#160; token = stbi__hdr_gettoken(s,buffer);</div>
+<div class="line"><a name="l06631"></a><span class="lineno"> 6631</span>&#160; <span class="keywordflow">if</span> (strncmp(token, <span class="stringliteral">&quot;-Y &quot;</span>, 3)) {</div>
+<div class="line"><a name="l06632"></a><span class="lineno"> 6632</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06633"></a><span class="lineno"> 6633</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06634"></a><span class="lineno"> 6634</span>&#160; }</div>
+<div class="line"><a name="l06635"></a><span class="lineno"> 6635</span>&#160; token += 3;</div>
+<div class="line"><a name="l06636"></a><span class="lineno"> 6636</span>&#160; *y = (int) strtol(token, &amp;token, 10);</div>
+<div class="line"><a name="l06637"></a><span class="lineno"> 6637</span>&#160; <span class="keywordflow">while</span> (*token == <span class="charliteral">&#39; &#39;</span>) ++token;</div>
+<div class="line"><a name="l06638"></a><span class="lineno"> 6638</span>&#160; <span class="keywordflow">if</span> (strncmp(token, <span class="stringliteral">&quot;+X &quot;</span>, 3)) {</div>
+<div class="line"><a name="l06639"></a><span class="lineno"> 6639</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06640"></a><span class="lineno"> 6640</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06641"></a><span class="lineno"> 6641</span>&#160; }</div>
+<div class="line"><a name="l06642"></a><span class="lineno"> 6642</span>&#160; token += 3;</div>
+<div class="line"><a name="l06643"></a><span class="lineno"> 6643</span>&#160; *x = (int) strtol(token, NULL, 10);</div>
+<div class="line"><a name="l06644"></a><span class="lineno"> 6644</span>&#160; *comp = 3;</div>
+<div class="line"><a name="l06645"></a><span class="lineno"> 6645</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06646"></a><span class="lineno"> 6646</span>&#160;}</div>
+<div class="line"><a name="l06647"></a><span class="lineno"> 6647</span>&#160;<span class="preprocessor">#endif // STBI_NO_HDR</span></div>
+<div class="line"><a name="l06648"></a><span class="lineno"> 6648</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06649"></a><span class="lineno"> 6649</span>&#160;<span class="preprocessor">#ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l06650"></a><span class="lineno"> 6650</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__bmp_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06651"></a><span class="lineno"> 6651</span>&#160;{</div>
+<div class="line"><a name="l06652"></a><span class="lineno"> 6652</span>&#160; <span class="keywordtype">void</span> *p;</div>
+<div class="line"><a name="l06653"></a><span class="lineno"> 6653</span>&#160; stbi__bmp_data info;</div>
+<div class="line"><a name="l06654"></a><span class="lineno"> 6654</span>&#160;</div>
+<div class="line"><a name="l06655"></a><span class="lineno"> 6655</span>&#160; info.all_a = 255;</div>
+<div class="line"><a name="l06656"></a><span class="lineno"> 6656</span>&#160; p = stbi__bmp_parse_header(s, &amp;info);</div>
+<div class="line"><a name="l06657"></a><span class="lineno"> 6657</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06658"></a><span class="lineno"> 6658</span>&#160; <span class="keywordflow">if</span> (p == NULL)</div>
+<div class="line"><a name="l06659"></a><span class="lineno"> 6659</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06660"></a><span class="lineno"> 6660</span>&#160; <span class="keywordflow">if</span> (x) *x = s-&gt;img_x;</div>
+<div class="line"><a name="l06661"></a><span class="lineno"> 6661</span>&#160; <span class="keywordflow">if</span> (y) *y = s-&gt;img_y;</div>
+<div class="line"><a name="l06662"></a><span class="lineno"> 6662</span>&#160; <span class="keywordflow">if</span> (comp) *comp = info.ma ? 4 : 3;</div>
+<div class="line"><a name="l06663"></a><span class="lineno"> 6663</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06664"></a><span class="lineno"> 6664</span>&#160;}</div>
+<div class="line"><a name="l06665"></a><span class="lineno"> 6665</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06666"></a><span class="lineno"> 6666</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06667"></a><span class="lineno"> 6667</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PSD</span></div>
+<div class="line"><a name="l06668"></a><span class="lineno"> 6668</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__psd_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06669"></a><span class="lineno"> 6669</span>&#160;{</div>
+<div class="line"><a name="l06670"></a><span class="lineno"> 6670</span>&#160; <span class="keywordtype">int</span> channelCount, dummy;</div>
+<div class="line"><a name="l06671"></a><span class="lineno"> 6671</span>&#160; <span class="keywordflow">if</span> (!x) x = &amp;dummy;</div>
+<div class="line"><a name="l06672"></a><span class="lineno"> 6672</span>&#160; <span class="keywordflow">if</span> (!y) y = &amp;dummy;</div>
+<div class="line"><a name="l06673"></a><span class="lineno"> 6673</span>&#160; <span class="keywordflow">if</span> (!comp) comp = &amp;dummy;</div>
+<div class="line"><a name="l06674"></a><span class="lineno"> 6674</span>&#160; <span class="keywordflow">if</span> (stbi__get32be(s) != 0x38425053) {</div>
+<div class="line"><a name="l06675"></a><span class="lineno"> 6675</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06676"></a><span class="lineno"> 6676</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06677"></a><span class="lineno"> 6677</span>&#160; }</div>
+<div class="line"><a name="l06678"></a><span class="lineno"> 6678</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(s) != 1) {</div>
+<div class="line"><a name="l06679"></a><span class="lineno"> 6679</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06680"></a><span class="lineno"> 6680</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06681"></a><span class="lineno"> 6681</span>&#160; }</div>
+<div class="line"><a name="l06682"></a><span class="lineno"> 6682</span>&#160; stbi__skip(s, 6);</div>
+<div class="line"><a name="l06683"></a><span class="lineno"> 6683</span>&#160; channelCount = stbi__get16be(s);</div>
+<div class="line"><a name="l06684"></a><span class="lineno"> 6684</span>&#160; <span class="keywordflow">if</span> (channelCount &lt; 0 || channelCount &gt; 16) {</div>
+<div class="line"><a name="l06685"></a><span class="lineno"> 6685</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06686"></a><span class="lineno"> 6686</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06687"></a><span class="lineno"> 6687</span>&#160; }</div>
+<div class="line"><a name="l06688"></a><span class="lineno"> 6688</span>&#160; *y = stbi__get32be(s);</div>
+<div class="line"><a name="l06689"></a><span class="lineno"> 6689</span>&#160; *x = stbi__get32be(s);</div>
+<div class="line"><a name="l06690"></a><span class="lineno"> 6690</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(s) != 8) {</div>
+<div class="line"><a name="l06691"></a><span class="lineno"> 6691</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06692"></a><span class="lineno"> 6692</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06693"></a><span class="lineno"> 6693</span>&#160; }</div>
+<div class="line"><a name="l06694"></a><span class="lineno"> 6694</span>&#160; <span class="keywordflow">if</span> (stbi__get16be(s) != 3) {</div>
+<div class="line"><a name="l06695"></a><span class="lineno"> 6695</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06696"></a><span class="lineno"> 6696</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06697"></a><span class="lineno"> 6697</span>&#160; }</div>
+<div class="line"><a name="l06698"></a><span class="lineno"> 6698</span>&#160; *comp = 4;</div>
+<div class="line"><a name="l06699"></a><span class="lineno"> 6699</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06700"></a><span class="lineno"> 6700</span>&#160;}</div>
+<div class="line"><a name="l06701"></a><span class="lineno"> 6701</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06702"></a><span class="lineno"> 6702</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06703"></a><span class="lineno"> 6703</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PIC</span></div>
+<div class="line"><a name="l06704"></a><span class="lineno"> 6704</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pic_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06705"></a><span class="lineno"> 6705</span>&#160;{</div>
+<div class="line"><a name="l06706"></a><span class="lineno"> 6706</span>&#160; <span class="keywordtype">int</span> act_comp=0,num_packets=0,chained,dummy;</div>
+<div class="line"><a name="l06707"></a><span class="lineno"> 6707</span>&#160; stbi__pic_packet packets[10];</div>
+<div class="line"><a name="l06708"></a><span class="lineno"> 6708</span>&#160;</div>
+<div class="line"><a name="l06709"></a><span class="lineno"> 6709</span>&#160; <span class="keywordflow">if</span> (!x) x = &amp;dummy;</div>
+<div class="line"><a name="l06710"></a><span class="lineno"> 6710</span>&#160; <span class="keywordflow">if</span> (!y) y = &amp;dummy;</div>
+<div class="line"><a name="l06711"></a><span class="lineno"> 6711</span>&#160; <span class="keywordflow">if</span> (!comp) comp = &amp;dummy;</div>
+<div class="line"><a name="l06712"></a><span class="lineno"> 6712</span>&#160;</div>
+<div class="line"><a name="l06713"></a><span class="lineno"> 6713</span>&#160; <span class="keywordflow">if</span> (!stbi__pic_is4(s,<span class="stringliteral">&quot;\x53\x80\xF6\x34&quot;</span>)) {</div>
+<div class="line"><a name="l06714"></a><span class="lineno"> 6714</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06715"></a><span class="lineno"> 6715</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06716"></a><span class="lineno"> 6716</span>&#160; }</div>
+<div class="line"><a name="l06717"></a><span class="lineno"> 6717</span>&#160;</div>
+<div class="line"><a name="l06718"></a><span class="lineno"> 6718</span>&#160; stbi__skip(s, 88);</div>
+<div class="line"><a name="l06719"></a><span class="lineno"> 6719</span>&#160;</div>
+<div class="line"><a name="l06720"></a><span class="lineno"> 6720</span>&#160; *x = stbi__get16be(s);</div>
+<div class="line"><a name="l06721"></a><span class="lineno"> 6721</span>&#160; *y = stbi__get16be(s);</div>
+<div class="line"><a name="l06722"></a><span class="lineno"> 6722</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) {</div>
+<div class="line"><a name="l06723"></a><span class="lineno"> 6723</span>&#160; stbi__rewind( s);</div>
+<div class="line"><a name="l06724"></a><span class="lineno"> 6724</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06725"></a><span class="lineno"> 6725</span>&#160; }</div>
+<div class="line"><a name="l06726"></a><span class="lineno"> 6726</span>&#160; <span class="keywordflow">if</span> ( (*x) != 0 &amp;&amp; (1 &lt;&lt; 28) / (*x) &lt; (*y)) {</div>
+<div class="line"><a name="l06727"></a><span class="lineno"> 6727</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06728"></a><span class="lineno"> 6728</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06729"></a><span class="lineno"> 6729</span>&#160; }</div>
+<div class="line"><a name="l06730"></a><span class="lineno"> 6730</span>&#160;</div>
+<div class="line"><a name="l06731"></a><span class="lineno"> 6731</span>&#160; stbi__skip(s, 8);</div>
+<div class="line"><a name="l06732"></a><span class="lineno"> 6732</span>&#160;</div>
+<div class="line"><a name="l06733"></a><span class="lineno"> 6733</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l06734"></a><span class="lineno"> 6734</span>&#160; stbi__pic_packet *packet;</div>
+<div class="line"><a name="l06735"></a><span class="lineno"> 6735</span>&#160;</div>
+<div class="line"><a name="l06736"></a><span class="lineno"> 6736</span>&#160; <span class="keywordflow">if</span> (num_packets==<span class="keyword">sizeof</span>(packets)/<span class="keyword">sizeof</span>(packets[0]))</div>
+<div class="line"><a name="l06737"></a><span class="lineno"> 6737</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06738"></a><span class="lineno"> 6738</span>&#160;</div>
+<div class="line"><a name="l06739"></a><span class="lineno"> 6739</span>&#160; packet = &amp;packets[num_packets++];</div>
+<div class="line"><a name="l06740"></a><span class="lineno"> 6740</span>&#160; chained = stbi__get8(s);</div>
+<div class="line"><a name="l06741"></a><span class="lineno"> 6741</span>&#160; packet-&gt;size = stbi__get8(s);</div>
+<div class="line"><a name="l06742"></a><span class="lineno"> 6742</span>&#160; packet-&gt;type = stbi__get8(s);</div>
+<div class="line"><a name="l06743"></a><span class="lineno"> 6743</span>&#160; packet-&gt;channel = stbi__get8(s);</div>
+<div class="line"><a name="l06744"></a><span class="lineno"> 6744</span>&#160; act_comp |= packet-&gt;channel;</div>
+<div class="line"><a name="l06745"></a><span class="lineno"> 6745</span>&#160;</div>
+<div class="line"><a name="l06746"></a><span class="lineno"> 6746</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s)) {</div>
+<div class="line"><a name="l06747"></a><span class="lineno"> 6747</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06748"></a><span class="lineno"> 6748</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06749"></a><span class="lineno"> 6749</span>&#160; }</div>
+<div class="line"><a name="l06750"></a><span class="lineno"> 6750</span>&#160; <span class="keywordflow">if</span> (packet-&gt;size != 8) {</div>
+<div class="line"><a name="l06751"></a><span class="lineno"> 6751</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06752"></a><span class="lineno"> 6752</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06753"></a><span class="lineno"> 6753</span>&#160; }</div>
+<div class="line"><a name="l06754"></a><span class="lineno"> 6754</span>&#160; } <span class="keywordflow">while</span> (chained);</div>
+<div class="line"><a name="l06755"></a><span class="lineno"> 6755</span>&#160;</div>
+<div class="line"><a name="l06756"></a><span class="lineno"> 6756</span>&#160; *comp = (act_comp &amp; 0x10 ? 4 : 3);</div>
+<div class="line"><a name="l06757"></a><span class="lineno"> 6757</span>&#160;</div>
+<div class="line"><a name="l06758"></a><span class="lineno"> 6758</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06759"></a><span class="lineno"> 6759</span>&#160;}</div>
+<div class="line"><a name="l06760"></a><span class="lineno"> 6760</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06761"></a><span class="lineno"> 6761</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06762"></a><span class="lineno"> 6762</span>&#160;<span class="comment">// *************************************************************************************************</span></div>
+<div class="line"><a name="l06763"></a><span class="lineno"> 6763</span>&#160;<span class="comment">// Portable Gray Map and Portable Pixel Map loader</span></div>
+<div class="line"><a name="l06764"></a><span class="lineno"> 6764</span>&#160;<span class="comment">// by Ken Miller</span></div>
+<div class="line"><a name="l06765"></a><span class="lineno"> 6765</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l06766"></a><span class="lineno"> 6766</span>&#160;<span class="comment">// PGM: http://netpbm.sourceforge.net/doc/pgm.html</span></div>
+<div class="line"><a name="l06767"></a><span class="lineno"> 6767</span>&#160;<span class="comment">// PPM: http://netpbm.sourceforge.net/doc/ppm.html</span></div>
+<div class="line"><a name="l06768"></a><span class="lineno"> 6768</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l06769"></a><span class="lineno"> 6769</span>&#160;<span class="comment">// Known limitations:</span></div>
+<div class="line"><a name="l06770"></a><span class="lineno"> 6770</span>&#160;<span class="comment">// Does not support comments in the header section</span></div>
+<div class="line"><a name="l06771"></a><span class="lineno"> 6771</span>&#160;<span class="comment">// Does not support ASCII image data (formats P2 and P3)</span></div>
+<div class="line"><a name="l06772"></a><span class="lineno"> 6772</span>&#160;<span class="comment">// Does not support 16-bit-per-channel</span></div>
+<div class="line"><a name="l06773"></a><span class="lineno"> 6773</span>&#160;</div>
+<div class="line"><a name="l06774"></a><span class="lineno"> 6774</span>&#160;<span class="preprocessor">#ifndef STBI_NO_PNM</span></div>
+<div class="line"><a name="l06775"></a><span class="lineno"> 6775</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06776"></a><span class="lineno"> 6776</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_test(stbi__context *s)</div>
+<div class="line"><a name="l06777"></a><span class="lineno"> 6777</span>&#160;{</div>
+<div class="line"><a name="l06778"></a><span class="lineno"> 6778</span>&#160; <span class="keywordtype">char</span> p, t;</div>
+<div class="line"><a name="l06779"></a><span class="lineno"> 6779</span>&#160; p = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06780"></a><span class="lineno"> 6780</span>&#160; t = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06781"></a><span class="lineno"> 6781</span>&#160; <span class="keywordflow">if</span> (p != <span class="charliteral">&#39;P&#39;</span> || (t != <span class="charliteral">&#39;5&#39;</span> &amp;&amp; t != <span class="charliteral">&#39;6&#39;</span>)) {</div>
+<div class="line"><a name="l06782"></a><span class="lineno"> 6782</span>&#160; stbi__rewind( s );</div>
+<div class="line"><a name="l06783"></a><span class="lineno"> 6783</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06784"></a><span class="lineno"> 6784</span>&#160; }</div>
+<div class="line"><a name="l06785"></a><span class="lineno"> 6785</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06786"></a><span class="lineno"> 6786</span>&#160;}</div>
+<div class="line"><a name="l06787"></a><span class="lineno"> 6787</span>&#160;</div>
+<div class="line"><a name="l06788"></a><span class="lineno"> 6788</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *stbi__pnm_load(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp, <span class="keywordtype">int</span> req_comp, stbi__result_info *ri)</div>
+<div class="line"><a name="l06789"></a><span class="lineno"> 6789</span>&#160;{</div>
+<div class="line"><a name="l06790"></a><span class="lineno"> 6790</span>&#160; <a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *out;</div>
+<div class="line"><a name="l06791"></a><span class="lineno"> 6791</span>&#160; STBI_NOTUSED(ri);</div>
+<div class="line"><a name="l06792"></a><span class="lineno"> 6792</span>&#160;</div>
+<div class="line"><a name="l06793"></a><span class="lineno"> 6793</span>&#160; <span class="keywordflow">if</span> (!stbi__pnm_info(s, (<span class="keywordtype">int</span> *)&amp;s-&gt;img_x, (<span class="keywordtype">int</span> *)&amp;s-&gt;img_y, (<span class="keywordtype">int</span> *)&amp;s-&gt;img_n))</div>
+<div class="line"><a name="l06794"></a><span class="lineno"> 6794</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06795"></a><span class="lineno"> 6795</span>&#160;</div>
+<div class="line"><a name="l06796"></a><span class="lineno"> 6796</span>&#160; *x = s-&gt;img_x;</div>
+<div class="line"><a name="l06797"></a><span class="lineno"> 6797</span>&#160; *y = s-&gt;img_y;</div>
+<div class="line"><a name="l06798"></a><span class="lineno"> 6798</span>&#160; <span class="keywordflow">if</span> (comp) *comp = s-&gt;img_n;</div>
+<div class="line"><a name="l06799"></a><span class="lineno"> 6799</span>&#160;</div>
+<div class="line"><a name="l06800"></a><span class="lineno"> 6800</span>&#160; <span class="keywordflow">if</span> (!stbi__mad3sizes_valid(s-&gt;img_n, s-&gt;img_x, s-&gt;img_y, 0))</div>
+<div class="line"><a name="l06801"></a><span class="lineno"> 6801</span>&#160; <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;too large&quot;</span>, <span class="stringliteral">&quot;PNM too large&quot;</span>);</div>
+<div class="line"><a name="l06802"></a><span class="lineno"> 6802</span>&#160;</div>
+<div class="line"><a name="l06803"></a><span class="lineno"> 6803</span>&#160; out = (<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> *) stbi__malloc_mad3(s-&gt;img_n, s-&gt;img_x, s-&gt;img_y, 0);</div>
+<div class="line"><a name="l06804"></a><span class="lineno"> 6804</span>&#160; <span class="keywordflow">if</span> (!out) <span class="keywordflow">return</span> stbi__errpuc(<span class="stringliteral">&quot;outofmem&quot;</span>, <span class="stringliteral">&quot;Out of memory&quot;</span>);</div>
+<div class="line"><a name="l06805"></a><span class="lineno"> 6805</span>&#160; stbi__getn(s, out, s-&gt;img_n * s-&gt;img_x * s-&gt;img_y);</div>
+<div class="line"><a name="l06806"></a><span class="lineno"> 6806</span>&#160;</div>
+<div class="line"><a name="l06807"></a><span class="lineno"> 6807</span>&#160; <span class="keywordflow">if</span> (req_comp &amp;&amp; req_comp != s-&gt;img_n) {</div>
+<div class="line"><a name="l06808"></a><span class="lineno"> 6808</span>&#160; out = stbi__convert_format(out, s-&gt;img_n, req_comp, s-&gt;img_x, s-&gt;img_y);</div>
+<div class="line"><a name="l06809"></a><span class="lineno"> 6809</span>&#160; <span class="keywordflow">if</span> (out == NULL) <span class="keywordflow">return</span> out; <span class="comment">// stbi__convert_format frees input on failure</span></div>
+<div class="line"><a name="l06810"></a><span class="lineno"> 6810</span>&#160; }</div>
+<div class="line"><a name="l06811"></a><span class="lineno"> 6811</span>&#160; <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l06812"></a><span class="lineno"> 6812</span>&#160;}</div>
+<div class="line"><a name="l06813"></a><span class="lineno"> 6813</span>&#160;</div>
+<div class="line"><a name="l06814"></a><span class="lineno"> 6814</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_isspace(<span class="keywordtype">char</span> c)</div>
+<div class="line"><a name="l06815"></a><span class="lineno"> 6815</span>&#160;{</div>
+<div class="line"><a name="l06816"></a><span class="lineno"> 6816</span>&#160; <span class="keywordflow">return</span> c == <span class="charliteral">&#39; &#39;</span> || c == <span class="charliteral">&#39;\t&#39;</span> || c == <span class="charliteral">&#39;\n&#39;</span> || c == <span class="charliteral">&#39;\v&#39;</span> || c == <span class="charliteral">&#39;\f&#39;</span> || c == <span class="charliteral">&#39;\r&#39;</span>;</div>
+<div class="line"><a name="l06817"></a><span class="lineno"> 6817</span>&#160;}</div>
+<div class="line"><a name="l06818"></a><span class="lineno"> 6818</span>&#160;</div>
+<div class="line"><a name="l06819"></a><span class="lineno"> 6819</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> stbi__pnm_skip_whitespace(stbi__context *s, <span class="keywordtype">char</span> *c)</div>
+<div class="line"><a name="l06820"></a><span class="lineno"> 6820</span>&#160;{</div>
+<div class="line"><a name="l06821"></a><span class="lineno"> 6821</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
+<div class="line"><a name="l06822"></a><span class="lineno"> 6822</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(s) &amp;&amp; stbi__pnm_isspace(*c))</div>
+<div class="line"><a name="l06823"></a><span class="lineno"> 6823</span>&#160; *c = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06824"></a><span class="lineno"> 6824</span>&#160;</div>
+<div class="line"><a name="l06825"></a><span class="lineno"> 6825</span>&#160; <span class="keywordflow">if</span> (stbi__at_eof(s) || *c != <span class="charliteral">&#39;#&#39;</span>)</div>
+<div class="line"><a name="l06826"></a><span class="lineno"> 6826</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l06827"></a><span class="lineno"> 6827</span>&#160;</div>
+<div class="line"><a name="l06828"></a><span class="lineno"> 6828</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(s) &amp;&amp; *c != <span class="charliteral">&#39;\n&#39;</span> &amp;&amp; *c != <span class="charliteral">&#39;\r&#39;</span> )</div>
+<div class="line"><a name="l06829"></a><span class="lineno"> 6829</span>&#160; *c = (<span class="keywordtype">char</span>) stbi__get8(s);</div>
+<div class="line"><a name="l06830"></a><span class="lineno"> 6830</span>&#160; }</div>
+<div class="line"><a name="l06831"></a><span class="lineno"> 6831</span>&#160;}</div>
+<div class="line"><a name="l06832"></a><span class="lineno"> 6832</span>&#160;</div>
+<div class="line"><a name="l06833"></a><span class="lineno"> 6833</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_isdigit(<span class="keywordtype">char</span> c)</div>
+<div class="line"><a name="l06834"></a><span class="lineno"> 6834</span>&#160;{</div>
+<div class="line"><a name="l06835"></a><span class="lineno"> 6835</span>&#160; <span class="keywordflow">return</span> c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;9&#39;</span>;</div>
+<div class="line"><a name="l06836"></a><span class="lineno"> 6836</span>&#160;}</div>
+<div class="line"><a name="l06837"></a><span class="lineno"> 6837</span>&#160;</div>
+<div class="line"><a name="l06838"></a><span class="lineno"> 6838</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_getinteger(stbi__context *s, <span class="keywordtype">char</span> *c)</div>
+<div class="line"><a name="l06839"></a><span class="lineno"> 6839</span>&#160;{</div>
+<div class="line"><a name="l06840"></a><span class="lineno"> 6840</span>&#160; <span class="keywordtype">int</span> value = 0;</div>
+<div class="line"><a name="l06841"></a><span class="lineno"> 6841</span>&#160;</div>
+<div class="line"><a name="l06842"></a><span class="lineno"> 6842</span>&#160; <span class="keywordflow">while</span> (!stbi__at_eof(s) &amp;&amp; stbi__pnm_isdigit(*c)) {</div>
+<div class="line"><a name="l06843"></a><span class="lineno"> 6843</span>&#160; value = value*10 + (*c - <span class="charliteral">&#39;0&#39;</span>);</div>
+<div class="line"><a name="l06844"></a><span class="lineno"> 6844</span>&#160; *c = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06845"></a><span class="lineno"> 6845</span>&#160; }</div>
+<div class="line"><a name="l06846"></a><span class="lineno"> 6846</span>&#160;</div>
+<div class="line"><a name="l06847"></a><span class="lineno"> 6847</span>&#160; <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l06848"></a><span class="lineno"> 6848</span>&#160;}</div>
+<div class="line"><a name="l06849"></a><span class="lineno"> 6849</span>&#160;</div>
+<div class="line"><a name="l06850"></a><span class="lineno"> 6850</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__pnm_info(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06851"></a><span class="lineno"> 6851</span>&#160;{</div>
+<div class="line"><a name="l06852"></a><span class="lineno"> 6852</span>&#160; <span class="keywordtype">int</span> maxv, dummy;</div>
+<div class="line"><a name="l06853"></a><span class="lineno"> 6853</span>&#160; <span class="keywordtype">char</span> c, p, t;</div>
+<div class="line"><a name="l06854"></a><span class="lineno"> 6854</span>&#160;</div>
+<div class="line"><a name="l06855"></a><span class="lineno"> 6855</span>&#160; <span class="keywordflow">if</span> (!x) x = &amp;dummy;</div>
+<div class="line"><a name="l06856"></a><span class="lineno"> 6856</span>&#160; <span class="keywordflow">if</span> (!y) y = &amp;dummy;</div>
+<div class="line"><a name="l06857"></a><span class="lineno"> 6857</span>&#160; <span class="keywordflow">if</span> (!comp) comp = &amp;dummy;</div>
+<div class="line"><a name="l06858"></a><span class="lineno"> 6858</span>&#160;</div>
+<div class="line"><a name="l06859"></a><span class="lineno"> 6859</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06860"></a><span class="lineno"> 6860</span>&#160;</div>
+<div class="line"><a name="l06861"></a><span class="lineno"> 6861</span>&#160; <span class="comment">// Get identifier</span></div>
+<div class="line"><a name="l06862"></a><span class="lineno"> 6862</span>&#160; p = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06863"></a><span class="lineno"> 6863</span>&#160; t = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06864"></a><span class="lineno"> 6864</span>&#160; <span class="keywordflow">if</span> (p != <span class="charliteral">&#39;P&#39;</span> || (t != <span class="charliteral">&#39;5&#39;</span> &amp;&amp; t != <span class="charliteral">&#39;6&#39;</span>)) {</div>
+<div class="line"><a name="l06865"></a><span class="lineno"> 6865</span>&#160; stbi__rewind(s);</div>
+<div class="line"><a name="l06866"></a><span class="lineno"> 6866</span>&#160; <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l06867"></a><span class="lineno"> 6867</span>&#160; }</div>
+<div class="line"><a name="l06868"></a><span class="lineno"> 6868</span>&#160;</div>
+<div class="line"><a name="l06869"></a><span class="lineno"> 6869</span>&#160; *comp = (t == <span class="charliteral">&#39;6&#39;</span>) ? 3 : 1; <span class="comment">// &#39;5&#39; is 1-component .pgm; &#39;6&#39; is 3-component .ppm</span></div>
+<div class="line"><a name="l06870"></a><span class="lineno"> 6870</span>&#160;</div>
+<div class="line"><a name="l06871"></a><span class="lineno"> 6871</span>&#160; c = (char) stbi__get8(s);</div>
+<div class="line"><a name="l06872"></a><span class="lineno"> 6872</span>&#160; stbi__pnm_skip_whitespace(s, &amp;c);</div>
+<div class="line"><a name="l06873"></a><span class="lineno"> 6873</span>&#160;</div>
+<div class="line"><a name="l06874"></a><span class="lineno"> 6874</span>&#160; *x = stbi__pnm_getinteger(s, &amp;c); <span class="comment">// read width</span></div>
+<div class="line"><a name="l06875"></a><span class="lineno"> 6875</span>&#160; stbi__pnm_skip_whitespace(s, &amp;c);</div>
+<div class="line"><a name="l06876"></a><span class="lineno"> 6876</span>&#160;</div>
+<div class="line"><a name="l06877"></a><span class="lineno"> 6877</span>&#160; *y = stbi__pnm_getinteger(s, &amp;c); <span class="comment">// read height</span></div>
+<div class="line"><a name="l06878"></a><span class="lineno"> 6878</span>&#160; stbi__pnm_skip_whitespace(s, &amp;c);</div>
+<div class="line"><a name="l06879"></a><span class="lineno"> 6879</span>&#160;</div>
+<div class="line"><a name="l06880"></a><span class="lineno"> 6880</span>&#160; maxv = stbi__pnm_getinteger(s, &amp;c); <span class="comment">// read max value</span></div>
+<div class="line"><a name="l06881"></a><span class="lineno"> 6881</span>&#160;</div>
+<div class="line"><a name="l06882"></a><span class="lineno"> 6882</span>&#160; <span class="keywordflow">if</span> (maxv &gt; 255)</div>
+<div class="line"><a name="l06883"></a><span class="lineno"> 6883</span>&#160; <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;max value &gt; 255&quot;</span>, <span class="stringliteral">&quot;PPM image not 8-bit&quot;</span>);</div>
+<div class="line"><a name="l06884"></a><span class="lineno"> 6884</span>&#160; <span class="keywordflow">else</span></div>
+<div class="line"><a name="l06885"></a><span class="lineno"> 6885</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06886"></a><span class="lineno"> 6886</span>&#160;}</div>
+<div class="line"><a name="l06887"></a><span class="lineno"> 6887</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l06888"></a><span class="lineno"> 6888</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06889"></a><span class="lineno"> 6889</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> stbi__info_main(stbi__context *s, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06890"></a><span class="lineno"> 6890</span>&#160;{</div>
+<div class="line"><a name="l06891"></a><span class="lineno"> 6891</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_JPEG</span></div>
+<div class="line"><a name="l06892"></a><span class="lineno"> 6892</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__jpeg_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06893"></a><span class="lineno"> 6893</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06894"></a><span class="lineno"> 6894</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06895"></a><span class="lineno"> 6895</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_PNG</span></div>
+<div class="line"><a name="l06896"></a><span class="lineno"> 6896</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__png_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06897"></a><span class="lineno"> 6897</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06898"></a><span class="lineno"> 6898</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06899"></a><span class="lineno"> 6899</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_GIF</span></div>
+<div class="line"><a name="l06900"></a><span class="lineno"> 6900</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__gif_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06901"></a><span class="lineno"> 6901</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06902"></a><span class="lineno"> 6902</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06903"></a><span class="lineno"> 6903</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_BMP</span></div>
+<div class="line"><a name="l06904"></a><span class="lineno"> 6904</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__bmp_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06905"></a><span class="lineno"> 6905</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06906"></a><span class="lineno"> 6906</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06907"></a><span class="lineno"> 6907</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_PSD</span></div>
+<div class="line"><a name="l06908"></a><span class="lineno"> 6908</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__psd_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06909"></a><span class="lineno"> 6909</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06910"></a><span class="lineno"> 6910</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06911"></a><span class="lineno"> 6911</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_PIC</span></div>
+<div class="line"><a name="l06912"></a><span class="lineno"> 6912</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__pic_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06913"></a><span class="lineno"> 6913</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06914"></a><span class="lineno"> 6914</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06915"></a><span class="lineno"> 6915</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_PNM</span></div>
+<div class="line"><a name="l06916"></a><span class="lineno"> 6916</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__pnm_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06917"></a><span class="lineno"> 6917</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06918"></a><span class="lineno"> 6918</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06919"></a><span class="lineno"> 6919</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_HDR</span></div>
+<div class="line"><a name="l06920"></a><span class="lineno"> 6920</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__hdr_info(s, x, y, comp)) <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06921"></a><span class="lineno"> 6921</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06922"></a><span class="lineno"> 6922</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06923"></a><span class="lineno"> 6923</span>&#160; <span class="comment">// test tga last because it&#39;s a crappy test!</span></div>
+<div class="line"><a name="l06924"></a><span class="lineno"> 6924</span>&#160;<span class="preprocessor"> #ifndef STBI_NO_TGA</span></div>
+<div class="line"><a name="l06925"></a><span class="lineno"> 6925</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (stbi__tga_info(s, x, y, comp))</div>
+<div class="line"><a name="l06926"></a><span class="lineno"> 6926</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l06927"></a><span class="lineno"> 6927</span>&#160;<span class="preprocessor"> #endif</span></div>
+<div class="line"><a name="l06928"></a><span class="lineno"> 6928</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;unknown image type&quot;</span>, <span class="stringliteral">&quot;Image not of any known type, or corrupt&quot;</span>);</div>
+<div class="line"><a name="l06929"></a><span class="lineno"> 6929</span>&#160;}</div>
+<div class="line"><a name="l06930"></a><span class="lineno"> 6930</span>&#160;</div>
+<div class="line"><a name="l06931"></a><span class="lineno"> 6931</span>&#160;<span class="preprocessor">#ifndef STBI_NO_STDIO</span></div>
+<div class="line"><a name="l06932"></a><span class="lineno"> 6932</span>&#160;<span class="preprocessor"></span><a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stbi_info</a>(<span class="keywordtype">char</span> <span class="keyword">const</span> *filename, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06933"></a><span class="lineno"> 6933</span>&#160;{</div>
+<div class="line"><a name="l06934"></a><span class="lineno"> 6934</span>&#160; FILE *f = stbi__fopen(filename, <span class="stringliteral">&quot;rb&quot;</span>);</div>
+<div class="line"><a name="l06935"></a><span class="lineno"> 6935</span>&#160; <span class="keywordtype">int</span> result;</div>
+<div class="line"><a name="l06936"></a><span class="lineno"> 6936</span>&#160; <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> stbi__err(<span class="stringliteral">&quot;can&#39;t fopen&quot;</span>, <span class="stringliteral">&quot;Unable to open file&quot;</span>);</div>
+<div class="line"><a name="l06937"></a><span class="lineno"> 6937</span>&#160; result = <a class="code" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stbi_info_from_file</a>(f, x, y, comp);</div>
+<div class="line"><a name="l06938"></a><span class="lineno"> 6938</span>&#160; fclose(f);</div>
+<div class="line"><a name="l06939"></a><span class="lineno"> 6939</span>&#160; <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l06940"></a><span class="lineno"> 6940</span>&#160;}</div>
+<div class="line"><a name="l06941"></a><span class="lineno"> 6941</span>&#160;</div>
+<div class="line"><a name="l06942"></a><span class="lineno"> 6942</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stbi_info_from_file</a>(FILE *f, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06943"></a><span class="lineno"> 6943</span>&#160;{</div>
+<div class="line"><a name="l06944"></a><span class="lineno"> 6944</span>&#160; <span class="keywordtype">int</span> r;</div>
+<div class="line"><a name="l06945"></a><span class="lineno"> 6945</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l06946"></a><span class="lineno"> 6946</span>&#160; <span class="keywordtype">long</span> pos = ftell(f);</div>
+<div class="line"><a name="l06947"></a><span class="lineno"> 6947</span>&#160; stbi__start_file(&amp;s, f);</div>
+<div class="line"><a name="l06948"></a><span class="lineno"> 6948</span>&#160; r = stbi__info_main(&amp;s,x,y,comp);</div>
+<div class="line"><a name="l06949"></a><span class="lineno"> 6949</span>&#160; fseek(f,pos,SEEK_SET);</div>
+<div class="line"><a name="l06950"></a><span class="lineno"> 6950</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l06951"></a><span class="lineno"> 6951</span>&#160;}</div>
+<div class="line"><a name="l06952"></a><span class="lineno"> 6952</span>&#160;<span class="preprocessor">#endif // !STBI_NO_STDIO</span></div>
+<div class="line"><a name="l06953"></a><span class="lineno"> 6953</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06954"></a><span class="lineno"> 6954</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stbi_info_from_memory</a>(<a class="code" href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a> <span class="keyword">const</span> *buffer, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06955"></a><span class="lineno"> 6955</span>&#160;{</div>
+<div class="line"><a name="l06956"></a><span class="lineno"> 6956</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l06957"></a><span class="lineno"> 6957</span>&#160; stbi__start_mem(&amp;s,buffer,len);</div>
+<div class="line"><a name="l06958"></a><span class="lineno"> 6958</span>&#160; <span class="keywordflow">return</span> stbi__info_main(&amp;s,x,y,comp);</div>
+<div class="line"><a name="l06959"></a><span class="lineno"> 6959</span>&#160;}</div>
+<div class="line"><a name="l06960"></a><span class="lineno"> 6960</span>&#160;</div>
+<div class="line"><a name="l06961"></a><span class="lineno"> 6961</span>&#160;<a class="code" href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a> <span class="keywordtype">int</span> <a class="code" href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stbi_info_from_callbacks</a>(<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> <span class="keyword">const</span> *c, <span class="keywordtype">void</span> *user, <span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y, <span class="keywordtype">int</span> *comp)</div>
+<div class="line"><a name="l06962"></a><span class="lineno"> 6962</span>&#160;{</div>
+<div class="line"><a name="l06963"></a><span class="lineno"> 6963</span>&#160; stbi__context s;</div>
+<div class="line"><a name="l06964"></a><span class="lineno"> 6964</span>&#160; stbi__start_callbacks(&amp;s, (<a class="code" href="structstbi__io__callbacks.html">stbi_io_callbacks</a> *) c, user);</div>
+<div class="line"><a name="l06965"></a><span class="lineno"> 6965</span>&#160; <span class="keywordflow">return</span> stbi__info_main(&amp;s,x,y,comp);</div>
+<div class="line"><a name="l06966"></a><span class="lineno"> 6966</span>&#160;}</div>
+<div class="line"><a name="l06967"></a><span class="lineno"> 6967</span>&#160;</div>
+<div class="line"><a name="l06968"></a><span class="lineno"> 6968</span>&#160;<span class="preprocessor">#endif // STB_IMAGE_IMPLEMENTATION</span></div>
+<div class="line"><a name="l06969"></a><span class="lineno"> 6969</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l06970"></a><span class="lineno"> 6970</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l06971"></a><span class="lineno"> 6971</span>&#160;<span class="comment"> revision history:</span></div>
+<div class="line"><a name="l06972"></a><span class="lineno"> 6972</span>&#160;<span class="comment"> 2.16 (2017-07-23) all functions have 16-bit variants;</span></div>
+<div class="line"><a name="l06973"></a><span class="lineno"> 6973</span>&#160;<span class="comment"> STBI_NO_STDIO works again;</span></div>
+<div class="line"><a name="l06974"></a><span class="lineno"> 6974</span>&#160;<span class="comment"> compilation fixes;</span></div>
+<div class="line"><a name="l06975"></a><span class="lineno"> 6975</span>&#160;<span class="comment"> fix rounding in unpremultiply;</span></div>
+<div class="line"><a name="l06976"></a><span class="lineno"> 6976</span>&#160;<span class="comment"> optimize vertical flip;</span></div>
+<div class="line"><a name="l06977"></a><span class="lineno"> 6977</span>&#160;<span class="comment"> disable raw_len validation;</span></div>
+<div class="line"><a name="l06978"></a><span class="lineno"> 6978</span>&#160;<span class="comment"> documentation fixes</span></div>
+<div class="line"><a name="l06979"></a><span class="lineno"> 6979</span>&#160;<span class="comment"> 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode;</span></div>
+<div class="line"><a name="l06980"></a><span class="lineno"> 6980</span>&#160;<span class="comment"> warning fixes; disable run-time SSE detection on gcc;</span></div>
+<div class="line"><a name="l06981"></a><span class="lineno"> 6981</span>&#160;<span class="comment"> uniform handling of optional &quot;return&quot; values;</span></div>
+<div class="line"><a name="l06982"></a><span class="lineno"> 6982</span>&#160;<span class="comment"> thread-safe initialization of zlib tables</span></div>
+<div class="line"><a name="l06983"></a><span class="lineno"> 6983</span>&#160;<span class="comment"> 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs</span></div>
+<div class="line"><a name="l06984"></a><span class="lineno"> 6984</span>&#160;<span class="comment"> 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now</span></div>
+<div class="line"><a name="l06985"></a><span class="lineno"> 6985</span>&#160;<span class="comment"> 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes</span></div>
+<div class="line"><a name="l06986"></a><span class="lineno"> 6986</span>&#160;<span class="comment"> 2.11 (2016-04-02) allocate large structures on the stack</span></div>
+<div class="line"><a name="l06987"></a><span class="lineno"> 6987</span>&#160;<span class="comment"> remove white matting for transparent PSD</span></div>
+<div class="line"><a name="l06988"></a><span class="lineno"> 6988</span>&#160;<span class="comment"> fix reported channel count for PNG &amp; BMP</span></div>
+<div class="line"><a name="l06989"></a><span class="lineno"> 6989</span>&#160;<span class="comment"> re-enable SSE2 in non-gcc 64-bit</span></div>
+<div class="line"><a name="l06990"></a><span class="lineno"> 6990</span>&#160;<span class="comment"> support RGB-formatted JPEG</span></div>
+<div class="line"><a name="l06991"></a><span class="lineno"> 6991</span>&#160;<span class="comment"> read 16-bit PNGs (only as 8-bit)</span></div>
+<div class="line"><a name="l06992"></a><span class="lineno"> 6992</span>&#160;<span class="comment"> 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED</span></div>
+<div class="line"><a name="l06993"></a><span class="lineno"> 6993</span>&#160;<span class="comment"> 2.09 (2016-01-16) allow comments in PNM files</span></div>
+<div class="line"><a name="l06994"></a><span class="lineno"> 6994</span>&#160;<span class="comment"> 16-bit-per-pixel TGA (not bit-per-component)</span></div>
+<div class="line"><a name="l06995"></a><span class="lineno"> 6995</span>&#160;<span class="comment"> info() for TGA could break due to .hdr handling</span></div>
+<div class="line"><a name="l06996"></a><span class="lineno"> 6996</span>&#160;<span class="comment"> info() for BMP to shares code instead of sloppy parse</span></div>
+<div class="line"><a name="l06997"></a><span class="lineno"> 6997</span>&#160;<span class="comment"> can use STBI_REALLOC_SIZED if allocator doesn&#39;t support realloc</span></div>
+<div class="line"><a name="l06998"></a><span class="lineno"> 6998</span>&#160;<span class="comment"> code cleanup</span></div>
+<div class="line"><a name="l06999"></a><span class="lineno"> 6999</span>&#160;<span class="comment"> 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA</span></div>
+<div class="line"><a name="l07000"></a><span class="lineno"> 7000</span>&#160;<span class="comment"> 2.07 (2015-09-13) fix compiler warnings</span></div>
+<div class="line"><a name="l07001"></a><span class="lineno"> 7001</span>&#160;<span class="comment"> partial animated GIF support</span></div>
+<div class="line"><a name="l07002"></a><span class="lineno"> 7002</span>&#160;<span class="comment"> limited 16-bpc PSD support</span></div>
+<div class="line"><a name="l07003"></a><span class="lineno"> 7003</span>&#160;<span class="comment"> #ifdef unused functions</span></div>
+<div class="line"><a name="l07004"></a><span class="lineno"> 7004</span>&#160;<span class="comment"> bug with &lt; 92 byte PIC,PNM,HDR,TGA</span></div>
+<div class="line"><a name="l07005"></a><span class="lineno"> 7005</span>&#160;<span class="comment"> 2.06 (2015-04-19) fix bug where PSD returns wrong &#39;*comp&#39; value</span></div>
+<div class="line"><a name="l07006"></a><span class="lineno"> 7006</span>&#160;<span class="comment"> 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning</span></div>
+<div class="line"><a name="l07007"></a><span class="lineno"> 7007</span>&#160;<span class="comment"> 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit</span></div>
+<div class="line"><a name="l07008"></a><span class="lineno"> 7008</span>&#160;<span class="comment"> 2.03 (2015-04-12) extra corruption checking (mmozeiko)</span></div>
+<div class="line"><a name="l07009"></a><span class="lineno"> 7009</span>&#160;<span class="comment"> stbi_set_flip_vertically_on_load (nguillemot)</span></div>
+<div class="line"><a name="l07010"></a><span class="lineno"> 7010</span>&#160;<span class="comment"> fix NEON support; fix mingw support</span></div>
+<div class="line"><a name="l07011"></a><span class="lineno"> 7011</span>&#160;<span class="comment"> 2.02 (2015-01-19) fix incorrect assert, fix warning</span></div>
+<div class="line"><a name="l07012"></a><span class="lineno"> 7012</span>&#160;<span class="comment"> 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2</span></div>
+<div class="line"><a name="l07013"></a><span class="lineno"> 7013</span>&#160;<span class="comment"> 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG</span></div>
+<div class="line"><a name="l07014"></a><span class="lineno"> 7014</span>&#160;<span class="comment"> 2.00 (2014-12-25) optimize JPG, including x86 SSE2 &amp; NEON SIMD (ryg)</span></div>
+<div class="line"><a name="l07015"></a><span class="lineno"> 7015</span>&#160;<span class="comment"> progressive JPEG (stb)</span></div>
+<div class="line"><a name="l07016"></a><span class="lineno"> 7016</span>&#160;<span class="comment"> PGM/PPM support (Ken Miller)</span></div>
+<div class="line"><a name="l07017"></a><span class="lineno"> 7017</span>&#160;<span class="comment"> STBI_MALLOC,STBI_REALLOC,STBI_FREE</span></div>
+<div class="line"><a name="l07018"></a><span class="lineno"> 7018</span>&#160;<span class="comment"> GIF bugfix -- seemingly never worked</span></div>
+<div class="line"><a name="l07019"></a><span class="lineno"> 7019</span>&#160;<span class="comment"> STBI_NO_*, STBI_ONLY_*</span></div>
+<div class="line"><a name="l07020"></a><span class="lineno"> 7020</span>&#160;<span class="comment"> 1.48 (2014-12-14) fix incorrectly-named assert()</span></div>
+<div class="line"><a name="l07021"></a><span class="lineno"> 7021</span>&#160;<span class="comment"> 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut &amp; stb)</span></div>
+<div class="line"><a name="l07022"></a><span class="lineno"> 7022</span>&#160;<span class="comment"> optimize PNG (ryg)</span></div>
+<div class="line"><a name="l07023"></a><span class="lineno"> 7023</span>&#160;<span class="comment"> fix bug in interlaced PNG with user-specified channel count (stb)</span></div>
+<div class="line"><a name="l07024"></a><span class="lineno"> 7024</span>&#160;<span class="comment"> 1.46 (2014-08-26)</span></div>
+<div class="line"><a name="l07025"></a><span class="lineno"> 7025</span>&#160;<span class="comment"> fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG</span></div>
+<div class="line"><a name="l07026"></a><span class="lineno"> 7026</span>&#160;<span class="comment"> 1.45 (2014-08-16)</span></div>
+<div class="line"><a name="l07027"></a><span class="lineno"> 7027</span>&#160;<span class="comment"> fix MSVC-ARM internal compiler error by wrapping malloc</span></div>
+<div class="line"><a name="l07028"></a><span class="lineno"> 7028</span>&#160;<span class="comment"> 1.44 (2014-08-07)</span></div>
+<div class="line"><a name="l07029"></a><span class="lineno"> 7029</span>&#160;<span class="comment"> various warning fixes from Ronny Chevalier</span></div>
+<div class="line"><a name="l07030"></a><span class="lineno"> 7030</span>&#160;<span class="comment"> 1.43 (2014-07-15)</span></div>
+<div class="line"><a name="l07031"></a><span class="lineno"> 7031</span>&#160;<span class="comment"> fix MSVC-only compiler problem in code changed in 1.42</span></div>
+<div class="line"><a name="l07032"></a><span class="lineno"> 7032</span>&#160;<span class="comment"> 1.42 (2014-07-09)</span></div>
+<div class="line"><a name="l07033"></a><span class="lineno"> 7033</span>&#160;<span class="comment"> don&#39;t define _CRT_SECURE_NO_WARNINGS (affects user code)</span></div>
+<div class="line"><a name="l07034"></a><span class="lineno"> 7034</span>&#160;<span class="comment"> fixes to stbi__cleanup_jpeg path</span></div>
+<div class="line"><a name="l07035"></a><span class="lineno"> 7035</span>&#160;<span class="comment"> added STBI_ASSERT to avoid requiring assert.h</span></div>
+<div class="line"><a name="l07036"></a><span class="lineno"> 7036</span>&#160;<span class="comment"> 1.41 (2014-06-25)</span></div>
+<div class="line"><a name="l07037"></a><span class="lineno"> 7037</span>&#160;<span class="comment"> fix search&amp;replace from 1.36 that messed up comments/error messages</span></div>
+<div class="line"><a name="l07038"></a><span class="lineno"> 7038</span>&#160;<span class="comment"> 1.40 (2014-06-22)</span></div>
+<div class="line"><a name="l07039"></a><span class="lineno"> 7039</span>&#160;<span class="comment"> fix gcc struct-initialization warning</span></div>
+<div class="line"><a name="l07040"></a><span class="lineno"> 7040</span>&#160;<span class="comment"> 1.39 (2014-06-15)</span></div>
+<div class="line"><a name="l07041"></a><span class="lineno"> 7041</span>&#160;<span class="comment"> fix to TGA optimization when req_comp != number of components in TGA;</span></div>
+<div class="line"><a name="l07042"></a><span class="lineno"> 7042</span>&#160;<span class="comment"> fix to GIF loading because BMP wasn&#39;t rewinding (whoops, no GIFs in my test suite)</span></div>
+<div class="line"><a name="l07043"></a><span class="lineno"> 7043</span>&#160;<span class="comment"> add support for BMP version 5 (more ignored fields)</span></div>
+<div class="line"><a name="l07044"></a><span class="lineno"> 7044</span>&#160;<span class="comment"> 1.38 (2014-06-06)</span></div>
+<div class="line"><a name="l07045"></a><span class="lineno"> 7045</span>&#160;<span class="comment"> suppress MSVC warnings on integer casts truncating values</span></div>
+<div class="line"><a name="l07046"></a><span class="lineno"> 7046</span>&#160;<span class="comment"> fix accidental rename of &#39;skip&#39; field of I/O</span></div>
+<div class="line"><a name="l07047"></a><span class="lineno"> 7047</span>&#160;<span class="comment"> 1.37 (2014-06-04)</span></div>
+<div class="line"><a name="l07048"></a><span class="lineno"> 7048</span>&#160;<span class="comment"> remove duplicate typedef</span></div>
+<div class="line"><a name="l07049"></a><span class="lineno"> 7049</span>&#160;<span class="comment"> 1.36 (2014-06-03)</span></div>
+<div class="line"><a name="l07050"></a><span class="lineno"> 7050</span>&#160;<span class="comment"> convert to header file single-file library</span></div>
+<div class="line"><a name="l07051"></a><span class="lineno"> 7051</span>&#160;<span class="comment"> if de-iphone isn&#39;t set, load iphone images color-swapped instead of returning NULL</span></div>
+<div class="line"><a name="l07052"></a><span class="lineno"> 7052</span>&#160;<span class="comment"> 1.35 (2014-05-27)</span></div>
+<div class="line"><a name="l07053"></a><span class="lineno"> 7053</span>&#160;<span class="comment"> various warnings</span></div>
+<div class="line"><a name="l07054"></a><span class="lineno"> 7054</span>&#160;<span class="comment"> fix broken STBI_SIMD path</span></div>
+<div class="line"><a name="l07055"></a><span class="lineno"> 7055</span>&#160;<span class="comment"> fix bug where stbi_load_from_file no longer left file pointer in correct place</span></div>
+<div class="line"><a name="l07056"></a><span class="lineno"> 7056</span>&#160;<span class="comment"> fix broken non-easy path for 32-bit BMP (possibly never used)</span></div>
+<div class="line"><a name="l07057"></a><span class="lineno"> 7057</span>&#160;<span class="comment"> TGA optimization by Arseny Kapoulkine</span></div>
+<div class="line"><a name="l07058"></a><span class="lineno"> 7058</span>&#160;<span class="comment"> 1.34 (unknown)</span></div>
+<div class="line"><a name="l07059"></a><span class="lineno"> 7059</span>&#160;<span class="comment"> use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case</span></div>
+<div class="line"><a name="l07060"></a><span class="lineno"> 7060</span>&#160;<span class="comment"> 1.33 (2011-07-14)</span></div>
+<div class="line"><a name="l07061"></a><span class="lineno"> 7061</span>&#160;<span class="comment"> make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements</span></div>
+<div class="line"><a name="l07062"></a><span class="lineno"> 7062</span>&#160;<span class="comment"> 1.32 (2011-07-13)</span></div>
+<div class="line"><a name="l07063"></a><span class="lineno"> 7063</span>&#160;<span class="comment"> support for &quot;info&quot; function for all supported filetypes (SpartanJ)</span></div>
+<div class="line"><a name="l07064"></a><span class="lineno"> 7064</span>&#160;<span class="comment"> 1.31 (2011-06-20)</span></div>
+<div class="line"><a name="l07065"></a><span class="lineno"> 7065</span>&#160;<span class="comment"> a few more leak fixes, bug in PNG handling (SpartanJ)</span></div>
+<div class="line"><a name="l07066"></a><span class="lineno"> 7066</span>&#160;<span class="comment"> 1.30 (2011-06-11)</span></div>
+<div class="line"><a name="l07067"></a><span class="lineno"> 7067</span>&#160;<span class="comment"> added ability to load files via callbacks to accomidate custom input streams (Ben Wenger)</span></div>
+<div class="line"><a name="l07068"></a><span class="lineno"> 7068</span>&#160;<span class="comment"> removed deprecated format-specific test/load functions</span></div>
+<div class="line"><a name="l07069"></a><span class="lineno"> 7069</span>&#160;<span class="comment"> removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway</span></div>
+<div class="line"><a name="l07070"></a><span class="lineno"> 7070</span>&#160;<span class="comment"> error cases in bmp and tga give messages and don&#39;t leak (Raymond Barbiero, grisha)</span></div>
+<div class="line"><a name="l07071"></a><span class="lineno"> 7071</span>&#160;<span class="comment"> fix inefficiency in decoding 32-bit BMP (David Woo)</span></div>
+<div class="line"><a name="l07072"></a><span class="lineno"> 7072</span>&#160;<span class="comment"> 1.29 (2010-08-16)</span></div>
+<div class="line"><a name="l07073"></a><span class="lineno"> 7073</span>&#160;<span class="comment"> various warning fixes from Aurelien Pocheville</span></div>
+<div class="line"><a name="l07074"></a><span class="lineno"> 7074</span>&#160;<span class="comment"> 1.28 (2010-08-01)</span></div>
+<div class="line"><a name="l07075"></a><span class="lineno"> 7075</span>&#160;<span class="comment"> fix bug in GIF palette transparency (SpartanJ)</span></div>
+<div class="line"><a name="l07076"></a><span class="lineno"> 7076</span>&#160;<span class="comment"> 1.27 (2010-08-01)</span></div>
+<div class="line"><a name="l07077"></a><span class="lineno"> 7077</span>&#160;<span class="comment"> cast-to-stbi_uc to fix warnings</span></div>
+<div class="line"><a name="l07078"></a><span class="lineno"> 7078</span>&#160;<span class="comment"> 1.26 (2010-07-24)</span></div>
+<div class="line"><a name="l07079"></a><span class="lineno"> 7079</span>&#160;<span class="comment"> fix bug in file buffering for PNG reported by SpartanJ</span></div>
+<div class="line"><a name="l07080"></a><span class="lineno"> 7080</span>&#160;<span class="comment"> 1.25 (2010-07-17)</span></div>
+<div class="line"><a name="l07081"></a><span class="lineno"> 7081</span>&#160;<span class="comment"> refix trans_data warning (Won Chun)</span></div>
+<div class="line"><a name="l07082"></a><span class="lineno"> 7082</span>&#160;<span class="comment"> 1.24 (2010-07-12)</span></div>
+<div class="line"><a name="l07083"></a><span class="lineno"> 7083</span>&#160;<span class="comment"> perf improvements reading from files on platforms with lock-heavy fgetc()</span></div>
+<div class="line"><a name="l07084"></a><span class="lineno"> 7084</span>&#160;<span class="comment"> minor perf improvements for jpeg</span></div>
+<div class="line"><a name="l07085"></a><span class="lineno"> 7085</span>&#160;<span class="comment"> deprecated type-specific functions so we&#39;ll get feedback if they&#39;re needed</span></div>
+<div class="line"><a name="l07086"></a><span class="lineno"> 7086</span>&#160;<span class="comment"> attempt to fix trans_data warning (Won Chun)</span></div>
+<div class="line"><a name="l07087"></a><span class="lineno"> 7087</span>&#160;<span class="comment"> 1.23 fixed bug in iPhone support</span></div>
+<div class="line"><a name="l07088"></a><span class="lineno"> 7088</span>&#160;<span class="comment"> 1.22 (2010-07-10)</span></div>
+<div class="line"><a name="l07089"></a><span class="lineno"> 7089</span>&#160;<span class="comment"> removed image *writing* support</span></div>
+<div class="line"><a name="l07090"></a><span class="lineno"> 7090</span>&#160;<span class="comment"> stbi_info support from Jetro Lauha</span></div>
+<div class="line"><a name="l07091"></a><span class="lineno"> 7091</span>&#160;<span class="comment"> GIF support from Jean-Marc Lienher</span></div>
+<div class="line"><a name="l07092"></a><span class="lineno"> 7092</span>&#160;<span class="comment"> iPhone PNG-extensions from James Brown</span></div>
+<div class="line"><a name="l07093"></a><span class="lineno"> 7093</span>&#160;<span class="comment"> warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva)</span></div>
+<div class="line"><a name="l07094"></a><span class="lineno"> 7094</span>&#160;<span class="comment"> 1.21 fix use of &#39;stbi_uc&#39; in header (reported by jon blow)</span></div>
+<div class="line"><a name="l07095"></a><span class="lineno"> 7095</span>&#160;<span class="comment"> 1.20 added support for Softimage PIC, by Tom Seddon</span></div>
+<div class="line"><a name="l07096"></a><span class="lineno"> 7096</span>&#160;<span class="comment"> 1.19 bug in interlaced PNG corruption check (found by ryg)</span></div>
+<div class="line"><a name="l07097"></a><span class="lineno"> 7097</span>&#160;<span class="comment"> 1.18 (2008-08-02)</span></div>
+<div class="line"><a name="l07098"></a><span class="lineno"> 7098</span>&#160;<span class="comment"> fix a threading bug (local mutable static)</span></div>
+<div class="line"><a name="l07099"></a><span class="lineno"> 7099</span>&#160;<span class="comment"> 1.17 support interlaced PNG</span></div>
+<div class="line"><a name="l07100"></a><span class="lineno"> 7100</span>&#160;<span class="comment"> 1.16 major bugfix - stbi__convert_format converted one too many pixels</span></div>
+<div class="line"><a name="l07101"></a><span class="lineno"> 7101</span>&#160;<span class="comment"> 1.15 initialize some fields for thread safety</span></div>
+<div class="line"><a name="l07102"></a><span class="lineno"> 7102</span>&#160;<span class="comment"> 1.14 fix threadsafe conversion bug</span></div>
+<div class="line"><a name="l07103"></a><span class="lineno"> 7103</span>&#160;<span class="comment"> header-file-only version (#define STBI_HEADER_FILE_ONLY before including)</span></div>
+<div class="line"><a name="l07104"></a><span class="lineno"> 7104</span>&#160;<span class="comment"> 1.13 threadsafe</span></div>
+<div class="line"><a name="l07105"></a><span class="lineno"> 7105</span>&#160;<span class="comment"> 1.12 const qualifiers in the API</span></div>
+<div class="line"><a name="l07106"></a><span class="lineno"> 7106</span>&#160;<span class="comment"> 1.11 Support installable IDCT, colorspace conversion routines</span></div>
+<div class="line"><a name="l07107"></a><span class="lineno"> 7107</span>&#160;<span class="comment"> 1.10 Fixes for 64-bit (don&#39;t use &quot;unsigned long&quot;)</span></div>
+<div class="line"><a name="l07108"></a><span class="lineno"> 7108</span>&#160;<span class="comment"> optimized upsampling by Fabian &quot;ryg&quot; Giesen</span></div>
+<div class="line"><a name="l07109"></a><span class="lineno"> 7109</span>&#160;<span class="comment"> 1.09 Fix format-conversion for PSD code (bad global variables!)</span></div>
+<div class="line"><a name="l07110"></a><span class="lineno"> 7110</span>&#160;<span class="comment"> 1.08 Thatcher Ulrich&#39;s PSD code integrated by Nicolas Schulz</span></div>
+<div class="line"><a name="l07111"></a><span class="lineno"> 7111</span>&#160;<span class="comment"> 1.07 attempt to fix C++ warning/errors again</span></div>
+<div class="line"><a name="l07112"></a><span class="lineno"> 7112</span>&#160;<span class="comment"> 1.06 attempt to fix C++ warning/errors again</span></div>
+<div class="line"><a name="l07113"></a><span class="lineno"> 7113</span>&#160;<span class="comment"> 1.05 fix TGA loading to return correct *comp and use good luminance calc</span></div>
+<div class="line"><a name="l07114"></a><span class="lineno"> 7114</span>&#160;<span class="comment"> 1.04 default float alpha is 1, not 255; use &#39;void *&#39; for stbi_image_free</span></div>
+<div class="line"><a name="l07115"></a><span class="lineno"> 7115</span>&#160;<span class="comment"> 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR</span></div>
+<div class="line"><a name="l07116"></a><span class="lineno"> 7116</span>&#160;<span class="comment"> 1.02 support for (subset of) HDR files, float interface for preferred access to them</span></div>
+<div class="line"><a name="l07117"></a><span class="lineno"> 7117</span>&#160;<span class="comment"> 1.01 fix bug: possible bug in handling right-side up bmps... not sure</span></div>
+<div class="line"><a name="l07118"></a><span class="lineno"> 7118</span>&#160;<span class="comment"> fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn&#39;t work at all</span></div>
+<div class="line"><a name="l07119"></a><span class="lineno"> 7119</span>&#160;<span class="comment"> 1.00 interface to zlib that skips zlib header</span></div>
+<div class="line"><a name="l07120"></a><span class="lineno"> 7120</span>&#160;<span class="comment"> 0.99 correct handling of alpha in palette</span></div>
+<div class="line"><a name="l07121"></a><span class="lineno"> 7121</span>&#160;<span class="comment"> 0.98 TGA loader by lonesock; dynamically add loaders (untested)</span></div>
+<div class="line"><a name="l07122"></a><span class="lineno"> 7122</span>&#160;<span class="comment"> 0.97 jpeg errors on too large a file; also catch another malloc failure</span></div>
+<div class="line"><a name="l07123"></a><span class="lineno"> 7123</span>&#160;<span class="comment"> 0.96 fix detection of invalid v value - particleman@mollyrocket forum</span></div>
+<div class="line"><a name="l07124"></a><span class="lineno"> 7124</span>&#160;<span class="comment"> 0.95 during header scan, seek to markers in case of padding</span></div>
+<div class="line"><a name="l07125"></a><span class="lineno"> 7125</span>&#160;<span class="comment"> 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same</span></div>
+<div class="line"><a name="l07126"></a><span class="lineno"> 7126</span>&#160;<span class="comment"> 0.93 handle jpegtran output; verbose errors</span></div>
+<div class="line"><a name="l07127"></a><span class="lineno"> 7127</span>&#160;<span class="comment"> 0.92 read 4,8,16,24,32-bit BMP files of several formats</span></div>
+<div class="line"><a name="l07128"></a><span class="lineno"> 7128</span>&#160;<span class="comment"> 0.91 output 24-bit Windows 3.0 BMP files</span></div>
+<div class="line"><a name="l07129"></a><span class="lineno"> 7129</span>&#160;<span class="comment"> 0.90 fix a few more warnings; bump version number to approach 1.0</span></div>
+<div class="line"><a name="l07130"></a><span class="lineno"> 7130</span>&#160;<span class="comment"> 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd</span></div>
+<div class="line"><a name="l07131"></a><span class="lineno"> 7131</span>&#160;<span class="comment"> 0.60 fix compiling as c++</span></div>
+<div class="line"><a name="l07132"></a><span class="lineno"> 7132</span>&#160;<span class="comment"> 0.59 fix warnings: merge Dave Moore&#39;s -Wall fixes</span></div>
+<div class="line"><a name="l07133"></a><span class="lineno"> 7133</span>&#160;<span class="comment"> 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian</span></div>
+<div class="line"><a name="l07134"></a><span class="lineno"> 7134</span>&#160;<span class="comment"> 0.57 fix bug: jpg last huffman symbol before marker was &gt;9 bits but less than 16 available</span></div>
+<div class="line"><a name="l07135"></a><span class="lineno"> 7135</span>&#160;<span class="comment"> 0.56 fix bug: zlib uncompressed mode len vs. nlen</span></div>
+<div class="line"><a name="l07136"></a><span class="lineno"> 7136</span>&#160;<span class="comment"> 0.55 fix bug: restart_interval not initialized to 0</span></div>
+<div class="line"><a name="l07137"></a><span class="lineno"> 7137</span>&#160;<span class="comment"> 0.54 allow NULL for &#39;int *comp&#39;</span></div>
+<div class="line"><a name="l07138"></a><span class="lineno"> 7138</span>&#160;<span class="comment"> 0.53 fix bug in png 3-&gt;4; speedup png decoding</span></div>
+<div class="line"><a name="l07139"></a><span class="lineno"> 7139</span>&#160;<span class="comment"> 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments</span></div>
+<div class="line"><a name="l07140"></a><span class="lineno"> 7140</span>&#160;<span class="comment"> 0.51 obey req_comp requests, 1-component jpegs return as 1-component,</span></div>
+<div class="line"><a name="l07141"></a><span class="lineno"> 7141</span>&#160;<span class="comment"> on &#39;test&#39; only check type, not whether we support this variant</span></div>
+<div class="line"><a name="l07142"></a><span class="lineno"> 7142</span>&#160;<span class="comment"> 0.50 (2006-11-19)</span></div>
+<div class="line"><a name="l07143"></a><span class="lineno"> 7143</span>&#160;<span class="comment"> first released version</span></div>
+<div class="line"><a name="l07144"></a><span class="lineno"> 7144</span>&#160;<span class="comment">*/</span></div>
+<div class="line"><a name="l07145"></a><span class="lineno"> 7145</span>&#160;</div>
+<div class="line"><a name="l07146"></a><span class="lineno"> 7146</span>&#160;</div>
+<div class="line"><a name="l07147"></a><span class="lineno"> 7147</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l07148"></a><span class="lineno"> 7148</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l07149"></a><span class="lineno"> 7149</span>&#160;<span class="comment">This software is available under 2 licenses -- choose whichever you prefer.</span></div>
+<div class="line"><a name="l07150"></a><span class="lineno"> 7150</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l07151"></a><span class="lineno"> 7151</span>&#160;<span class="comment">ALTERNATIVE A - MIT License</span></div>
+<div class="line"><a name="l07152"></a><span class="lineno"> 7152</span>&#160;<span class="comment">Copyright (c) 2017 Sean Barrett</span></div>
+<div class="line"><a name="l07153"></a><span class="lineno"> 7153</span>&#160;<span class="comment">Permission is hereby granted, free of charge, to any person obtaining a copy of</span></div>
+<div class="line"><a name="l07154"></a><span class="lineno"> 7154</span>&#160;<span class="comment">this software and associated documentation files (the &quot;Software&quot;), to deal in</span></div>
+<div class="line"><a name="l07155"></a><span class="lineno"> 7155</span>&#160;<span class="comment">the Software without restriction, including without limitation the rights to</span></div>
+<div class="line"><a name="l07156"></a><span class="lineno"> 7156</span>&#160;<span class="comment">use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies</span></div>
+<div class="line"><a name="l07157"></a><span class="lineno"> 7157</span>&#160;<span class="comment">of the Software, and to permit persons to whom the Software is furnished to do</span></div>
+<div class="line"><a name="l07158"></a><span class="lineno"> 7158</span>&#160;<span class="comment">so, subject to the following conditions:</span></div>
+<div class="line"><a name="l07159"></a><span class="lineno"> 7159</span>&#160;<span class="comment">The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l07160"></a><span class="lineno"> 7160</span>&#160;<span class="comment">copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l07161"></a><span class="lineno"> 7161</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l07162"></a><span class="lineno"> 7162</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l07163"></a><span class="lineno"> 7163</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l07164"></a><span class="lineno"> 7164</span>&#160;<span class="comment">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l07165"></a><span class="lineno"> 7165</span>&#160;<span class="comment">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l07166"></a><span class="lineno"> 7166</span>&#160;<span class="comment">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l07167"></a><span class="lineno"> 7167</span>&#160;<span class="comment">SOFTWARE.</span></div>
+<div class="line"><a name="l07168"></a><span class="lineno"> 7168</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l07169"></a><span class="lineno"> 7169</span>&#160;<span class="comment">ALTERNATIVE B - Public Domain (www.unlicense.org)</span></div>
+<div class="line"><a name="l07170"></a><span class="lineno"> 7170</span>&#160;<span class="comment">This is free and unencumbered software released into the public domain.</span></div>
+<div class="line"><a name="l07171"></a><span class="lineno"> 7171</span>&#160;<span class="comment">Anyone is free to copy, modify, publish, use, compile, sell, or distribute this</span></div>
+<div class="line"><a name="l07172"></a><span class="lineno"> 7172</span>&#160;<span class="comment">software, either in source code form or as a compiled binary, for any purpose,</span></div>
+<div class="line"><a name="l07173"></a><span class="lineno"> 7173</span>&#160;<span class="comment">commercial or non-commercial, and by any means.</span></div>
+<div class="line"><a name="l07174"></a><span class="lineno"> 7174</span>&#160;<span class="comment">In jurisdictions that recognize copyright laws, the author or authors of this</span></div>
+<div class="line"><a name="l07175"></a><span class="lineno"> 7175</span>&#160;<span class="comment">software dedicate any and all copyright interest in the software to the public</span></div>
+<div class="line"><a name="l07176"></a><span class="lineno"> 7176</span>&#160;<span class="comment">domain. We make this dedication for the benefit of the public at large and to</span></div>
+<div class="line"><a name="l07177"></a><span class="lineno"> 7177</span>&#160;<span class="comment">the detriment of our heirs and successors. We intend this dedication to be an</span></div>
+<div class="line"><a name="l07178"></a><span class="lineno"> 7178</span>&#160;<span class="comment">overt act of relinquishment in perpetuity of all present and future rights to</span></div>
+<div class="line"><a name="l07179"></a><span class="lineno"> 7179</span>&#160;<span class="comment">this software under copyright law.</span></div>
+<div class="line"><a name="l07180"></a><span class="lineno"> 7180</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l07181"></a><span class="lineno"> 7181</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l07182"></a><span class="lineno"> 7182</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l07183"></a><span class="lineno"> 7183</span>&#160;<span class="comment">AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span></div>
+<div class="line"><a name="l07184"></a><span class="lineno"> 7184</span>&#160;<span class="comment">ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</span></div>
+<div class="line"><a name="l07185"></a><span class="lineno"> 7185</span>&#160;<span class="comment">WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l07186"></a><span class="lineno"> 7186</span>&#160;<span class="comment">------------------------------------------------------------------------------</span></div>
+<div class="line"><a name="l07187"></a><span class="lineno"> 7187</span>&#160;<span class="comment">*/</span></div>
+<div class="ttc" id="stb__image_8h_html_a2d9ec9850cd12aefe7641b456266a4c2"><div class="ttname"><a href="stb__image_8h.html#a2d9ec9850cd12aefe7641b456266a4c2">STBIDEF</a></div><div class="ttdeci">#define STBIDEF</div><div class="ttdef"><b>Definition:</b> stb_image.h:330</div></div>
+<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ad20caec3b48a1eef164cb4ca81ba2587">yage::key::L</a></div></div>
+<div class="ttc" id="stb__image_8h_html_acfef077febce3bc3f1f339de478f3315"><div class="ttname"><a href="stb__image_8h.html#acfef077febce3bc3f1f339de478f3315">stbi_info_from_memory</a></div><div class="ttdeci">STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)</div></div>
+<div class="ttc" id="stb__image_8h_html_a3f02e0053e1c8d08a3ed436e6a82c7c9"><div class="ttname"><a href="stb__image_8h.html#a3f02e0053e1c8d08a3ed436e6a82c7c9">stbi_set_unpremultiply_on_load</a></div><div class="ttdeci">STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)</div></div>
+<div class="ttc" id="stb__image_8h_html_a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8"><div class="ttname"><a href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf5829d16d4cca6077465c5abd346e2f8">STBI_grey_alpha</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:315</div></div>
+<div class="ttc" id="stb__image_8h_html_af0e94f316fe1848f632517ca3c11d077"><div class="ttname"><a href="stb__image_8h.html#af0e94f316fe1848f632517ca3c11d077">stbi_is_hdr_from_callbacks</a></div><div class="ttdeci">STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user)</div></div>
+<div class="ttc" id="stb__image_8h_html_aa874b3ba909f3281d499894909678336"><div class="ttname"><a href="stb__image_8h.html#aa874b3ba909f3281d499894909678336">stbi_failure_reason</a></div><div class="ttdeci">STBIDEF const char * stbi_failure_reason(void)</div></div>
+<div class="ttc" id="stb__image_8h_html_a95ebc5c42c1a753200be8d465e933af7"><div class="ttname"><a href="stb__image_8h.html#a95ebc5c42c1a753200be8d465e933af7">stbi_load_from_callbacks</a></div><div class="ttdeci">STBIDEF stbi_uc * stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_ae21cc1184eeb5cc814699f1ed62c5258"><div class="ttname"><a href="stb__image_8h.html#ae21cc1184eeb5cc814699f1ed62c5258">stbi_hdr_to_ldr_scale</a></div><div class="ttdeci">STBIDEF void stbi_hdr_to_ldr_scale(float scale)</div></div>
+<div class="ttc" id="stb__image_8h_html_ab89c177fc52f1bb2dc1c05e48129a0a4"><div class="ttname"><a href="stb__image_8h.html#ab89c177fc52f1bb2dc1c05e48129a0a4">stbi_set_flip_vertically_on_load</a></div><div class="ttdeci">STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)</div></div>
+<div class="ttc" id="stb__image_8h_html_a648037d4c55689328ba08c8f5d293df2"><div class="ttname"><a href="stb__image_8h.html#a648037d4c55689328ba08c8f5d293df2">stbi_us</a></div><div class="ttdeci">unsigned short stbi_us</div><div class="ttdef"><b>Definition:</b> stb_image.h:321</div></div>
+<div class="ttc" id="stb__image_8h_html_af4f17acd30945a75901fdc022f90575f"><div class="ttname"><a href="stb__image_8h.html#af4f17acd30945a75901fdc022f90575f">stbi_loadf</a></div><div class="ttdeci">STBIDEF float * stbi_loadf(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a82bcc0957b6a4ebfdfa3d7f04fbaed18"><div class="ttname"><a href="stb__image_8h.html#a82bcc0957b6a4ebfdfa3d7f04fbaed18">stbi_load_16_from_callbacks</a></div><div class="ttdeci">STBIDEF stbi_us * stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a1feccdcf726dcc6b5502e3efa85b7dbb"><div class="ttname"><a href="stb__image_8h.html#a1feccdcf726dcc6b5502e3efa85b7dbb">stbi_ldr_to_hdr_gamma</a></div><div class="ttdeci">STBIDEF void stbi_ldr_to_hdr_gamma(float gamma)</div></div>
+<div class="ttc" id="stb__image_8h_html_a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf"><div class="ttname"><a href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa59123e5d0af25f9b1539f5cf1facddf">STBI_rgb</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:316</div></div>
+<div class="ttc" id="stb__image_8h_html_a8a58b6bcd805afa1bdb14f988dd37fee"><div class="ttname"><a href="stb__image_8h.html#a8a58b6bcd805afa1bdb14f988dd37fee">stbi_load_16</a></div><div class="ttdeci">STBIDEF stbi_us * stbi_load_16(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="structstbi__io__callbacks_html"><div class="ttname"><a href="structstbi__io__callbacks.html">stbi_io_callbacks</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:342</div></div>
+<div class="ttc" id="stb__image_8h_html_ab18889e43518d6b4421b705782bb1b5e"><div class="ttname"><a href="stb__image_8h.html#ab18889e43518d6b4421b705782bb1b5e">stbi_hdr_to_ldr_gamma</a></div><div class="ttdeci">STBIDEF void stbi_hdr_to_ldr_gamma(float gamma)</div></div>
+<div class="ttc" id="stb__image_8h_html_a28abedef4a0a93909332080df6be0021"><div class="ttname"><a href="stb__image_8h.html#a28abedef4a0a93909332080df6be0021">stbi_info_from_file</a></div><div class="ttdeci">STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)</div></div>
+<div class="ttc" id="stb__image_8h_html_af946583656a362a316b40c0421c20561"><div class="ttname"><a href="stb__image_8h.html#af946583656a362a316b40c0421c20561">stbi_ldr_to_hdr_scale</a></div><div class="ttdeci">STBIDEF void stbi_ldr_to_hdr_scale(float scale)</div></div>
+<div class="ttc" id="stb__image_8h_html_a5cbc6f5cbb3b2d0d87ee959fcee9d23e"><div class="ttname"><a href="stb__image_8h.html#a5cbc6f5cbb3b2d0d87ee959fcee9d23e">stbi_is_hdr_from_memory</a></div><div class="ttdeci">STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)</div></div>
+<div class="ttc" id="stb__image_8h_html_aaf10d41631e1e9214fde1688bdbd8524"><div class="ttname"><a href="stb__image_8h.html#aaf10d41631e1e9214fde1688bdbd8524">stbi_is_hdr_from_file</a></div><div class="ttdeci">STBIDEF int stbi_is_hdr_from_file(FILE *f)</div></div>
+<div class="ttc" id="stb__image_8h_html_a0d12efc011adfff7521f3b924feb0b0e"><div class="ttname"><a href="stb__image_8h.html#a0d12efc011adfff7521f3b924feb0b0e">stbi_zlib_decode_noheader_buffer</a></div><div class="ttdeci">STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)</div></div>
+<div class="ttc" id="stb__image_8h_html_aa9994764695597161e8f3776e97caa99"><div class="ttname"><a href="stb__image_8h.html#aa9994764695597161e8f3776e97caa99">stbi_load_from_file</a></div><div class="ttdeci">STBIDEF stbi_uc * stbi_load_from_file(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293"><div class="ttname"><a href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55baa7b1af0c9f0310c3ada2aa29a32de293">STBI_rgb_alpha</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:317</div></div>
+<div class="ttc" id="stb__image_8h_html_a5d47fb76ce1e34eb0729ad932c9c48e2"><div class="ttname"><a href="stb__image_8h.html#a5d47fb76ce1e34eb0729ad932c9c48e2">stbi_loadf_from_memory</a></div><div class="ttdeci">STBIDEF float * stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a86291c64cb663f41a34647d5e1abf363"><div class="ttname"><a href="stb__image_8h.html#a86291c64cb663f41a34647d5e1abf363">stbi_info_from_callbacks</a></div><div class="ttdeci">STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp)</div></div>
+<div class="ttc" id="stb__image_8h_html_a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa"><div class="ttname"><a href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad1eb95ca1fa7706bf732bf35a0ed40aa">STBI_grey</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:314</div></div>
+<div class="ttc" id="stb__image_8h_html_aede708cca1304520b2afcf4d5eb61d70"><div class="ttname"><a href="stb__image_8h.html#aede708cca1304520b2afcf4d5eb61d70">stbi_info</a></div><div class="ttdeci">STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)</div></div>
+<div class="ttc" id="stb__image_8h_html_ae8447830c49bc17f8491e12c1f0ded48"><div class="ttname"><a href="stb__image_8h.html#ae8447830c49bc17f8491e12c1f0ded48">stbi_zlib_decode_buffer</a></div><div class="ttdeci">STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)</div></div>
+<div class="ttc" id="stb__image_8h_html_ad30fd870ed2138ce8f38c9dd29b2f76a"><div class="ttname"><a href="stb__image_8h.html#ad30fd870ed2138ce8f38c9dd29b2f76a">stbi_load_16_from_memory</a></div><div class="ttdeci">STBIDEF stbi_us * stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_aefdc7387857a14894bbf321e9ea4f048"><div class="ttname"><a href="stb__image_8h.html#aefdc7387857a14894bbf321e9ea4f048">stbi_load</a></div><div class="ttdeci">STBIDEF stbi_uc * stbi_load(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_ae70f9a302f7e87fd971075e7f758d55c"><div class="ttname"><a href="stb__image_8h.html#ae70f9a302f7e87fd971075e7f758d55c">stbi_is_hdr</a></div><div class="ttdeci">STBIDEF int stbi_is_hdr(char const *filename)</div></div>
+<div class="ttc" id="stb__image_8h_html_a28eb51a1512ce382ee50f20e1d04d50d"><div class="ttname"><a href="stb__image_8h.html#a28eb51a1512ce382ee50f20e1d04d50d">stbi_uc</a></div><div class="ttdeci">unsigned char stbi_uc</div><div class="ttdef"><b>Definition:</b> stb_image.h:320</div></div>
+<div class="ttc" id="stb__image_8h_html_ad3e11bb44412a7ba348acfbad09caacb"><div class="ttname"><a href="stb__image_8h.html#ad3e11bb44412a7ba348acfbad09caacb">stbi_image_free</a></div><div class="ttdeci">STBIDEF void stbi_image_free(void *retval_from_stbi_load)</div></div>
+<div class="ttc" id="stb__image_8h_html_a6e7fd261af79ecef2208df3a6cc806bb"><div class="ttname"><a href="stb__image_8h.html#a6e7fd261af79ecef2208df3a6cc806bb">stbi_loadf_from_callbacks</a></div><div class="ttdeci">STBIDEF float * stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_acae25d31bfae29d75482f07fecf2935f"><div class="ttname"><a href="stb__image_8h.html#acae25d31bfae29d75482f07fecf2935f">stbi_load_from_memory</a></div><div class="ttdeci">STBIDEF stbi_uc * stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a7fbd65c83495f13f22469fe493775739"><div class="ttname"><a href="stb__image_8h.html#a7fbd65c83495f13f22469fe493775739">stbi_zlib_decode_noheader_malloc</a></div><div class="ttdeci">STBIDEF char * stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen)</div></div>
+<div class="ttc" id="stb__image_8h_html_a038b0e741859a482b8b9d60167e54d27"><div class="ttname"><a href="stb__image_8h.html#a038b0e741859a482b8b9d60167e54d27">stbi_zlib_decode_malloc_guesssize_headerflag</a></div><div class="ttdeci">STBIDEF char * stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)</div></div>
+<div class="ttc" id="stb__image_8h_html_a4919b67b12e0e3acc5301f185ca77e2e"><div class="ttname"><a href="stb__image_8h.html#a4919b67b12e0e3acc5301f185ca77e2e">stbi_zlib_decode_malloc</a></div><div class="ttdeci">STBIDEF char * stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen)</div></div>
+<div class="ttc" id="stb__image_8h_html_a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029"><div class="ttname"><a href="stb__image_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba0177ac2c5002f4f251bb766d41752029">STBI_default</a></div><div class="ttdef"><b>Definition:</b> stb_image.h:312</div></div>
+<div class="ttc" id="stb__image_8h_html_ace82446ecd7b5c760cde062179660f46"><div class="ttname"><a href="stb__image_8h.html#ace82446ecd7b5c760cde062179660f46">stbi_loadf_from_file</a></div><div class="ttdeci">STBIDEF float * stbi_loadf_from_file(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822a4c614360da93c0a041b22e537de151eb">yage::key::U</a></div></div>
+<div class="ttc" id="stb__image_8h_html_a9ca2591f0987284129e82bf9dbcf7c6c"><div class="ttname"><a href="stb__image_8h.html#a9ca2591f0987284129e82bf9dbcf7c6c">stbi_load_from_file_16</a></div><div class="ttdeci">STBIDEF stbi_us * stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)</div></div>
+<div class="ttc" id="stb__image_8h_html_a23525ef2b882f3de426b47ecf8d9151b"><div class="ttname"><a href="stb__image_8h.html#a23525ef2b882f3de426b47ecf8d9151b">stbi_convert_iphone_png_to_rgb</a></div><div class="ttdeci">STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)</div></div>
+<div class="ttc" id="stb__image_8h_html_aaaa17a529bec51403cc23dc2e7c36d79"><div class="ttname"><a href="stb__image_8h.html#aaaa17a529bec51403cc23dc2e7c36d79">stbi_zlib_decode_malloc_guesssize</a></div><div class="ttdeci">STBIDEF char * stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="stb__image_8h.html">stb_image.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/structstbi__io__callbacks-members.html b/structstbi__io__callbacks-members.html
new file mode 100644
index 00000000..69b56ffa
--- /dev/null
+++ b/structstbi__io__callbacks-members.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structstbi__io__callbacks.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">stbi_io_callbacks Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177">eof</a></td><td class="entry"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82">read</a></td><td class="entry"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83">skip</a></td><td class="entry"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/structstbi__io__callbacks.html b/structstbi__io__callbacks.html
new file mode 100644
index 00000000..553aca8c
--- /dev/null
+++ b/structstbi__io__callbacks.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: stbi_io_callbacks Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structstbi__io__callbacks.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structstbi__io__callbacks-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">stbi_io_callbacks Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="stb__image_8h_source.html">stb_image.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a73818f0a4f467e5abfefb1d635f62d82"><td class="memItemLeft" align="right" valign="top">int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82">read</a> )(void *user, char *data, int size)</td></tr>
+<tr class="separator:a73818f0a4f467e5abfefb1d635f62d82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a864be557872041ac06e1509caf05cc83"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83">skip</a> )(void *user, int n)</td></tr>
+<tr class="separator:a864be557872041ac06e1509caf05cc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c4f3c3b7c75a2e74a35caf74fb8d177"><td class="memItemLeft" align="right" valign="top">int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177">eof</a> )(void *user)</td></tr>
+<tr class="separator:a2c4f3c3b7c75a2e74a35caf74fb8d177"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a2c4f3c3b7c75a2e74a35caf74fb8d177"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int(* stbi_io_callbacks::eof)(void *user)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a73818f0a4f467e5abfefb1d635f62d82"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int(* stbi_io_callbacks::read)(void *user, char *data, int size)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a864be557872041ac06e1509caf05cc83"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void(* stbi_io_callbacks::skip)(void *user, int n)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>yage/core/<a class="el" href="stb__image_8h_source.html">stb_image.h</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="structstbi__io__callbacks.html">stbi_io_callbacks</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/structstbi__io__callbacks.js b/structstbi__io__callbacks.js
new file mode 100644
index 00000000..67604146
--- /dev/null
+++ b/structstbi__io__callbacks.js
@@ -0,0 +1,6 @@
+var structstbi__io__callbacks =
+[
+ [ "eof", "structstbi__io__callbacks.html#a2c4f3c3b7c75a2e74a35caf74fb8d177", null ],
+ [ "read", "structstbi__io__callbacks.html#a73818f0a4f467e5abfefb1d635f62d82", null ],
+ [ "skip", "structstbi__io__callbacks.html#a864be557872041ac06e1509caf05cc83", null ]
+]; \ No newline at end of file
diff --git a/structyage_1_1Colour-members.html b/structyage_1_1Colour-members.html
index 19014f2b..2af2121e 100644
--- a/structyage_1_1Colour-members.html
+++ b/structyage_1_1Colour-members.html
@@ -124,7 +124,7 @@ $(document).ready(function(){initNavTree('structyage_1_1Colour.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Colour.html b/structyage_1_1Colour.html
index ddbe0186..63c87167 100644
--- a/structyage_1_1Colour.html
+++ b/structyage_1_1Colour.html
@@ -255,7 +255,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
+<li>yage/data/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -263,7 +263,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="structyage_1_1Colour.html">Colour</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogMessage_1_1Meta-members.html b/structyage_1_1LogMessage_1_1Meta-members.html
index dd501640..7a9e74a2 100644
--- a/structyage_1_1LogMessage_1_1Meta-members.html
+++ b/structyage_1_1LogMessage_1_1Meta-members.html
@@ -114,13 +114,14 @@ $(document).ready(function(){initNavTree('structyage_1_1LogMessage_1_1Meta.html'
<p>This is the complete list of members for <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">fileName</a></td><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">lineNo</a></td><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">level</a></td><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">line</a></td><td class="entry"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">yage::LogMessage::Meta</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogMessage_1_1Meta.html b/structyage_1_1LogMessage_1_1Meta.html
index 0d691e0f..ee6b08de 100644
--- a/structyage_1_1LogMessage_1_1Meta.html
+++ b/structyage_1_1LogMessage_1_1Meta.html
@@ -118,10 +118,12 @@ $(document).ready(function(){initNavTree('structyage_1_1LogMessage_1_1Meta.html'
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
+<tr class="memitem:aa265c76e7ce54e4b912e1c41333fad3b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b">level</a></td></tr>
+<tr class="separator:aa265c76e7ce54e4b912e1c41333fad3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3ef1b01f47ef6254b8aa6fce13db7c4"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4">fileName</a></td></tr>
<tr class="separator:ae3ef1b01f47ef6254b8aa6fce13db7c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9df0fa3ac10256390a1fe0c873a9f362"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362">lineNo</a></td></tr>
-<tr class="separator:a9df0fa3ac10256390a1fe0c873a9f362"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac2951995b1f4ebf28e94bcd268c3dd3c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c">line</a></td></tr>
+<tr class="separator:ac2951995b1f4ebf28e94bcd268c3dd3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ae3ef1b01f47ef6254b8aa6fce13db7c4"></a>
@@ -136,12 +138,24 @@ Public Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a9df0fa3ac10256390a1fe0c873a9f362"></a>
+<a class="anchor" id="aa265c76e7ce54e4b912e1c41333fad3b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">int yage::LogMessage::Meta::lineNo</td>
+ <td class="memname"><a class="el" href="namespaceyage.html#a4ac616fa26af17775ed558a4c08e4788">LogLevel</a> yage::LogMessage::Meta::level</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac2951995b1f4ebf28e94bcd268c3dd3c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int yage::LogMessage::Meta::line</td>
</tr>
</table>
</div><div class="memdoc">
@@ -157,7 +171,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1LogMessage.html">LogMessage</a></li><li class="navelem"><a class="el" href="structyage_1_1LogMessage_1_1Meta.html">Meta</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogMessage_1_1Meta.js b/structyage_1_1LogMessage_1_1Meta.js
index bfe88fe3..466e08bf 100644
--- a/structyage_1_1LogMessage_1_1Meta.js
+++ b/structyage_1_1LogMessage_1_1Meta.js
@@ -1,5 +1,6 @@
var structyage_1_1LogMessage_1_1Meta =
[
[ "fileName", "structyage_1_1LogMessage_1_1Meta.html#ae3ef1b01f47ef6254b8aa6fce13db7c4", null ],
- [ "lineNo", "structyage_1_1LogMessage_1_1Meta.html#a9df0fa3ac10256390a1fe0c873a9f362", null ]
+ [ "level", "structyage_1_1LogMessage_1_1Meta.html#aa265c76e7ce54e4b912e1c41333fad3b", null ],
+ [ "line", "structyage_1_1LogMessage_1_1Meta.html#ac2951995b1f4ebf28e94bcd268c3dd3c", null ]
]; \ No newline at end of file
diff --git a/structyage_1_1LogSink_1_1Concept.js b/structyage_1_1LogSink_1_1Concept.js
deleted file mode 100644
index 4a944067..00000000
--- a/structyage_1_1LogSink_1_1Concept.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var structyage_1_1LogSink_1_1Concept =
-[
- [ "~Concept", "structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1", null ],
- [ "clone", "structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d", null ],
- [ "write", "structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac", null ]
-]; \ No newline at end of file
diff --git a/structyage_1_1LogSink_1_1Concept.png b/structyage_1_1LogSink_1_1Concept.png
deleted file mode 100644
index 338ace00..00000000
--- a/structyage_1_1LogSink_1_1Concept.png
+++ /dev/null
Binary files differ
diff --git a/structyage_1_1LogSink_1_1Model.js b/structyage_1_1LogSink_1_1Model.js
deleted file mode 100644
index f66194de..00000000
--- a/structyage_1_1LogSink_1_1Model.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var structyage_1_1LogSink_1_1Model =
-[
- [ "Model", "structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9", null ],
- [ "clone", "structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf", null ],
- [ "write", "structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224", null ],
- [ "impl", "structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d", null ]
-]; \ No newline at end of file
diff --git a/structyage_1_1LogSink_1_1Model.png b/structyage_1_1LogSink_1_1Model.png
deleted file mode 100644
index b1fc87a2..00000000
--- a/structyage_1_1LogSink_1_1Model.png
+++ /dev/null
Binary files differ
diff --git a/structyage_1_1Position-members.html b/structyage_1_1Position-members.html
index d6ea653c..680b835d 100644
--- a/structyage_1_1Position-members.html
+++ b/structyage_1_1Position-members.html
@@ -122,7 +122,7 @@ $(document).ready(function(){initNavTree('structyage_1_1Position.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Position.html b/structyage_1_1Position.html
index 124ad407..bb3d2acf 100644
--- a/structyage_1_1Position.html
+++ b/structyage_1_1Position.html
@@ -215,7 +215,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
+<li>yage/data/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -223,7 +223,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="structyage_1_1Position.html">Position</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Texture-members.html b/structyage_1_1Texture-members.html
index 7c92b2c7..a0b9605e 100644
--- a/structyage_1_1Texture-members.html
+++ b/structyage_1_1Texture-members.html
@@ -116,14 +116,16 @@ $(document).ready(function(){initNavTree('structyage_1_1Texture.html','');});
<tr class="even"><td class="entry"><a class="el" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a></td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a></td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">Texture</a>()</td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c">Texture</a>(GLuint id_i, int width_i, int height_i)</td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850">Texture</a>(GLuint id_i, int width_i, int height_i, int x_i=1, int y_i=1)</td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a></td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">x</a></td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">y</a></td><td class="entry"><a class="el" href="structyage_1_1Texture.html">yage::Texture</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Texture.html b/structyage_1_1Texture.html
index 5f8626c0..860240b2 100644
--- a/structyage_1_1Texture.html
+++ b/structyage_1_1Texture.html
@@ -121,8 +121,8 @@ $(document).ready(function(){initNavTree('structyage_1_1Texture.html','');});
Public Member Functions</h2></td></tr>
<tr class="memitem:a0cef080bceaaf5e702985f5494ea35d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">Texture</a> ()</td></tr>
<tr class="separator:a0cef080bceaaf5e702985f5494ea35d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9af4689df9f99c5074b7aa5d5857775c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c">Texture</a> (GLuint id_i, int width_i, int height_i)</td></tr>
-<tr class="separator:a9af4689df9f99c5074b7aa5d5857775c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0a85aa4202d12fca9c1f52085d26850"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850">Texture</a> (GLuint id_i, int width_i, int height_i, int x_i=1, int y_i=1)</td></tr>
+<tr class="separator:af0a85aa4202d12fca9c1f52085d26850"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
@@ -132,6 +132,10 @@ Public Attributes</h2></td></tr>
<tr class="separator:ad42f41cc57ed7a20928382f6557dc598"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ce16ac8ad034f7042620a418783b41e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a></td></tr>
<tr class="separator:a5ce16ac8ad034f7042620a418783b41e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7ecf257a7663cb0523d41c0519380046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">x</a></td></tr>
+<tr class="separator:a7ecf257a7663cb0523d41c0519380046"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bfae86da1ef1930238291660223a8f0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">y</a></td></tr>
+<tr class="separator:a4bfae86da1ef1930238291660223a8f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0cef080bceaaf5e702985f5494ea35d5"></a>
@@ -157,7 +161,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a9af4689df9f99c5074b7aa5d5857775c"></a>
+<a class="anchor" id="af0a85aa4202d12fca9c1f52085d26850"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -180,7 +184,19 @@ Public Attributes</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>height_i</em>&#160;</td>
+ <td class="paramname"><em>height_i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>x_i</em> = <code>1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>y_i</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -234,8 +250,32 @@ Public Attributes</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a7ecf257a7663cb0523d41c0519380046"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int yage::Texture::x</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4bfae86da1ef1930238291660223a8f0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int yage::Texture::y</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="texture_8h_source.html">texture.h</a></li>
+<li>yage/data/<a class="el" href="texture_8h_source.html">texture.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -243,7 +283,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="structyage_1_1Texture.html">Texture</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Texture.js b/structyage_1_1Texture.js
index 13dda067..cf8f3ae1 100644
--- a/structyage_1_1Texture.js
+++ b/structyage_1_1Texture.js
@@ -1,8 +1,10 @@
var structyage_1_1Texture =
[
[ "Texture", "structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5", null ],
- [ "Texture", "structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c", null ],
+ [ "Texture", "structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850", null ],
[ "height", "structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e", null ],
[ "id", "structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968", null ],
- [ "width", "structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598", null ]
+ [ "width", "structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598", null ],
+ [ "x", "structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046", null ],
+ [ "y", "structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0", null ]
]; \ No newline at end of file
diff --git a/structyage_1_1UV-members.html b/structyage_1_1UV-members.html
index 23036ee1..d0366b64 100644
--- a/structyage_1_1UV-members.html
+++ b/structyage_1_1UV-members.html
@@ -122,7 +122,7 @@ $(document).ready(function(){initNavTree('structyage_1_1UV.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1UV.html b/structyage_1_1UV.html
index a6cc2098..2e1e7694 100644
--- a/structyage_1_1UV.html
+++ b/structyage_1_1UV.html
@@ -215,7 +215,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
+<li>yage/data/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -223,7 +223,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="structyage_1_1UV.html">UV</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Vertex-members.html b/structyage_1_1Vertex-members.html
index 2de4303e..540aac99 100644
--- a/structyage_1_1Vertex-members.html
+++ b/structyage_1_1Vertex-members.html
@@ -126,7 +126,7 @@ $(document).ready(function(){initNavTree('structyage_1_1Vertex.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1Vertex.html b/structyage_1_1Vertex.html
index b41810f7..44f928c1 100644
--- a/structyage_1_1Vertex.html
+++ b/structyage_1_1Vertex.html
@@ -356,7 +356,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
+<li>yage/data/<a class="el" href="vertex_8h_source.html">vertex.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -364,7 +364,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="structyage_1_1Vertex.html">Vertex</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1details_1_1Coordinate-members.html b/structyage_1_1details_1_1Coordinate-members.html
index 98ff716e..3fa12f44 100644
--- a/structyage_1_1details_1_1Coordinate-members.html
+++ b/structyage_1_1details_1_1Coordinate-members.html
@@ -124,7 +124,7 @@ $(document).ready(function(){initNavTree('structyage_1_1details_1_1Coordinate.ht
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1details_1_1Coordinate.html b/structyage_1_1details_1_1Coordinate.html
index e4bdba86..bfab571d 100644
--- a/structyage_1_1details_1_1Coordinate.html
+++ b/structyage_1_1details_1_1Coordinate.html
@@ -263,7 +263,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1details.html">details</a></li><li class="navelem"><a class="el" href="structyage_1_1details_1_1Coordinate.html">Coordinate</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1details_1_1Glyph-members.html b/structyage_1_1details_1_1Glyph-members.html
new file mode 100644
index 00000000..8f4c96ce
--- /dev/null
+++ b/structyage_1_1details_1_1Glyph-members.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>YAGE: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAGE
+ &#160;<span id="projectnumber">v0.1.3.0</span>
+ </div>
+ <div id="projectbrief">Yet Another Game Engine</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('structyage_1_1details_1_1Glyph.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">yage::details::Glyph Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">bottom_left</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">bottom_right</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">depth</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">Glyph</a>(GLuint texture_i, float depth_i, const Vertex &amp;top_left_i, const Vertex &amp;top_right_i, const Vertex &amp;bottom_right_i, const Vertex &amp;bottom_left_i)</td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">texture</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">top_left</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">top_right</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1Glyph.html">yage::details::Glyph</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/classyage_1_1RenderBatch.html b/structyage_1_1details_1_1Glyph.html
index e7f7ac82..de6d354c 100644
--- a/classyage_1_1RenderBatch.html
+++ b/structyage_1_1details_1_1Glyph.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage::RenderBatch Class Reference</title>
+<title>YAGE: yage::details::Glyph Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('classyage_1_1RenderBatch.html','');});
+$(document).ready(function(){initNavTree('structyage_1_1details_1_1Glyph.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -108,83 +108,88 @@ $(document).ready(function(){initNavTree('classyage_1_1RenderBatch.html','');});
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
-<a href="classyage_1_1RenderBatch-members.html">List of all members</a> </div>
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structyage_1_1details_1_1Glyph-members.html">List of all members</a> </div>
<div class="headertitle">
-<div class="title">yage::RenderBatch Class Reference</div> </div>
+<div class="title">yage::details::Glyph Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
+<p><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture.
+ <a href="structyage_1_1details_1_1Glyph.html#details">More...</a></p>
+
<p><code>#include &lt;<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
-<tr class="memitem:a4a3a3180c63c51178871648d4c8e6853"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#a4a3a3180c63c51178871648d4c8e6853">RenderBatch</a> (GLint <a class="el" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">offset</a>, GLsizei <a class="el" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">num_vertices</a>, GLuint <a class="el" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">texture</a>)</td></tr>
-<tr class="separator:a4a3a3180c63c51178871648d4c8e6853"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff7e5f873fe2900dc2f4ce8fcf2b3944"><td class="memItemLeft" align="right" valign="top">GLint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#aff7e5f873fe2900dc2f4ce8fcf2b3944">offset</a> () const </td></tr>
-<tr class="separator:aff7e5f873fe2900dc2f4ce8fcf2b3944"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6af4f3f64abd1a6dc1e74ebafbb4e47e"><td class="memItemLeft" align="right" valign="top">GLsizei&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#a6af4f3f64abd1a6dc1e74ebafbb4e47e">num_vertices</a> () const </td></tr>
-<tr class="separator:a6af4f3f64abd1a6dc1e74ebafbb4e47e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad1cfc404c74ee3d838e9cd12a8c1962d"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#ad1cfc404c74ee3d838e9cd12a8c1962d">texture</a> () const </td></tr>
-<tr class="separator:ad1cfc404c74ee3d838e9cd12a8c1962d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91752b58fc10fb037658f27c9338627c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c">Glyph</a> (GLuint texture_i, float depth_i, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;top_left_i, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;top_right_i, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;bottom_right_i, const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;bottom_left_i)</td></tr>
+<tr class="separator:a91752b58fc10fb037658f27c9338627c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:ad12ecf32cf9f9244afa7e9ad15b4e78f"><td class="memItemLeft" align="right" valign="top">friend&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#ad12ecf32cf9f9244afa7e9ad15b4e78f">SpriteBatch</a></td></tr>
-<tr class="separator:ad12ecf32cf9f9244afa7e9ad15b4e78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a160bf0e089d392d26fd50935263762ba"><td class="memItemLeft" align="right" valign="top">GLsizei&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#a160bf0e089d392d26fd50935263762ba">num_vertices_</a></td></tr>
-<tr class="separator:a160bf0e089d392d26fd50935263762ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a129b5fa960e1acc85650ce06b10905e7"><td class="memItemLeft" align="right" valign="top">GLint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#a129b5fa960e1acc85650ce06b10905e7">offset_</a></td></tr>
-<tr class="separator:a129b5fa960e1acc85650ce06b10905e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17da9d35451d55766836917699406160"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classyage_1_1RenderBatch.html#a17da9d35451d55766836917699406160">texture_</a></td></tr>
-<tr class="separator:a17da9d35451d55766836917699406160"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:aba58f02d34ba363ab3435e2328e4bfcc"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc">texture</a></td></tr>
+<tr class="separator:aba58f02d34ba363ab3435e2328e4bfcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae5398583bd0b4c1d6b334bf3902903d9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9">depth</a></td></tr>
+<tr class="separator:ae5398583bd0b4c1d6b334bf3902903d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4dd2989e7b2a6d58dea6c85a9a1ed80d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d">top_left</a></td></tr>
+<tr class="separator:a4dd2989e7b2a6d58dea6c85a9a1ed80d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a503ba9786cf0fe3535e968b607a001da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da">top_right</a></td></tr>
+<tr class="separator:a503ba9786cf0fe3535e968b607a001da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9de1d469f98aa0411f8073fdc3aa39ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed">bottom_right</a></td></tr>
+<tr class="separator:a9de1d469f98aa0411f8073fdc3aa39ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac42b2ed4a9179c38196953ed32bfa056"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structyage_1_1Vertex.html">Vertex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056">bottom_left</a></td></tr>
+<tr class="separator:ac42b2ed4a9179c38196953ed32bfa056"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a4a3a3180c63c51178871648d4c8e6853"></a>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="structyage_1_1details_1_1Glyph.html" title="Glyph with information of the texture. ">Glyph</a> with information of the texture. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a91752b58fc10fb037658f27c9338627c"></a>
<div class="memitem">
<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">yage::RenderBatch::RenderBatch </td>
+ <td class="memname">yage::details::Glyph::Glyph </td>
<td>(</td>
- <td class="paramtype">GLint&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
+ <td class="paramtype">GLuint&#160;</td>
+ <td class="paramname"><em>texture_i</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">GLsizei&#160;</td>
- <td class="paramname"><em>num_vertices</em>, </td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>depth_i</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">GLuint&#160;</td>
- <td class="paramname"><em>texture</em>&#160;</td>
+ <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
+ <td class="paramname"><em>top_left_i</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
- <td>)</td>
- <td></td><td></td>
+ <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
+ <td class="paramname"><em>top_right_i</em>, </td>
</tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a6af4f3f64abd1a6dc1e74ebafbb4e47e"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
<tr>
- <td class="memname">GLsizei yage::RenderBatch::num_vertices </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
+ <td class="paramname"><em>bottom_right_i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structyage_1_1Vertex.html">Vertex</a> &amp;&#160;</td>
+ <td class="paramname"><em>bottom_left_i</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
@@ -196,144 +201,89 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="aff7e5f873fe2900dc2f4ce8fcf2b3944"></a>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="ac42b2ed4a9179c38196953ed32bfa056"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">GLint yage::RenderBatch::offset </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::details::Glyph::bottom_left</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<a class="anchor" id="ad1cfc404c74ee3d838e9cd12a8c1962d"></a>
+<a class="anchor" id="a9de1d469f98aa0411f8073fdc3aa39ed"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">GLuint yage::RenderBatch::texture </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::details::Glyph::bottom_right</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a160bf0e089d392d26fd50935263762ba"></a>
+<a class="anchor" id="ae5398583bd0b4c1d6b334bf3902903d9"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">GLsizei yage::RenderBatch::num_vertices_</td>
+ <td class="memname">float yage::details::Glyph::depth</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<a class="anchor" id="a129b5fa960e1acc85650ce06b10905e7"></a>
+<a class="anchor" id="aba58f02d34ba363ab3435e2328e4bfcc"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">GLint yage::RenderBatch::offset_</td>
+ <td class="memname">GLuint yage::details::Glyph::texture</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<a class="anchor" id="ad12ecf32cf9f9244afa7e9ad15b4e78f"></a>
+<a class="anchor" id="a4dd2989e7b2a6d58dea6c85a9a1ed80d"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">friend yage::RenderBatch::SpriteBatch</td>
+ <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::details::Glyph::top_left</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<a class="anchor" id="a17da9d35451d55766836917699406160"></a>
+<a class="anchor" id="a503ba9786cf0fe3535e968b607a001da"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">GLuint yage::RenderBatch::texture_</td>
+ <td class="memname"><a class="el" href="structyage_1_1Vertex.html">Vertex</a> yage::details::Glyph::top_right</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
</div>
-<hr/>The documentation for this class was generated from the following files:<ul>
-<li>yage/core/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
-<li>yage/core/<a class="el" href="spritebatch_8cpp.html">spritebatch.cpp</a></li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>yage/render/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1RenderBatch.html">RenderBatch</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1details.html">details</a></li><li class="navelem"><a class="el" href="structyage_1_1details_1_1Glyph.html">Glyph</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1details_1_1Glyph.js b/structyage_1_1details_1_1Glyph.js
new file mode 100644
index 00000000..2a5ef54c
--- /dev/null
+++ b/structyage_1_1details_1_1Glyph.js
@@ -0,0 +1,10 @@
+var structyage_1_1details_1_1Glyph =
+[
+ [ "Glyph", "structyage_1_1details_1_1Glyph.html#a91752b58fc10fb037658f27c9338627c", null ],
+ [ "bottom_left", "structyage_1_1details_1_1Glyph.html#ac42b2ed4a9179c38196953ed32bfa056", null ],
+ [ "bottom_right", "structyage_1_1details_1_1Glyph.html#a9de1d469f98aa0411f8073fdc3aa39ed", null ],
+ [ "depth", "structyage_1_1details_1_1Glyph.html#ae5398583bd0b4c1d6b334bf3902903d9", null ],
+ [ "texture", "structyage_1_1details_1_1Glyph.html#aba58f02d34ba363ab3435e2328e4bfcc", null ],
+ [ "top_left", "structyage_1_1details_1_1Glyph.html#a4dd2989e7b2a6d58dea6c85a9a1ed80d", null ],
+ [ "top_right", "structyage_1_1details_1_1Glyph.html#a503ba9786cf0fe3535e968b607a001da", null ]
+]; \ No newline at end of file
diff --git a/structyage_1_1LogSink_1_1Model-members.html b/structyage_1_1details_1_1RenderBatch-members.html
index 1172137c..a0c0388b 100644
--- a/structyage_1_1LogSink_1_1Model-members.html
+++ b/structyage_1_1details_1_1RenderBatch-members.html
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Model.html','');});
+$(document).ready(function(){initNavTree('structyage_1_1details_1_1RenderBatch.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -107,23 +107,22 @@ $(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Model.html','
<div class="header">
<div class="headertitle">
-<div class="title">yage::LogSink::Model&lt; T &gt; Member List</div> </div>
+<div class="title">yage::details::RenderBatch Member List</div> </div>
</div><!--header-->
<div class="contents">
-<p>This is the complete list of members for <a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a>, including all inherited members.</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">clone</a>() const override</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a99a011e95f7979baec2805df06d20c5d">impl</a></td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html#a207d650bb7d170236eff7b705228e3d9">Model</a>(T impl_i)</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">write</a>(const LogMessage::Meta &amp;meta, const std::string &amp;msg) const override</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Model.html">yage::LogSink::Model&lt; T &gt;</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">~Concept</a>()=default</td><td class="entry"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">yage::LogSink::Concept</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">num_vertices</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">offset</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">RenderBatch</a>(GLint offset_i, GLsizei num_vertices_i, GLuint texture_i)</td><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">texture</a></td><td class="entry"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">yage::details::RenderBatch</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1LogSink_1_1Concept.html b/structyage_1_1details_1_1RenderBatch.html
index 33a61ec8..9c77bc5c 100644
--- a/structyage_1_1LogSink_1_1Concept.html
+++ b/structyage_1_1details_1_1RenderBatch.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage::LogSink::Concept Struct Reference</title>
+<title>YAGE: yage::details::RenderBatch Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Concept.html','');});
+$(document).ready(function(){initNavTree('structyage_1_1details_1_1RenderBatch.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -108,32 +108,31 @@ $(document).ready(function(){initNavTree('structyage_1_1LogSink_1_1Concept.html'
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="structyage_1_1LogSink_1_1Concept-members.html">List of all members</a> </div>
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structyage_1_1details_1_1RenderBatch-members.html">List of all members</a> </div>
<div class="headertitle">
-<div class="title">yage::LogSink::Concept Struct Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
+<div class="title">yage::details::RenderBatch Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
-<div class="dynheader">
-Inheritance diagram for yage::LogSink::Concept:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="structyage_1_1LogSink_1_1Concept.png" usemap="#yage::LogSink::Concept_map" alt=""/>
- <map id="yage::LogSink::Concept_map" name="yage::LogSink::Concept_map">
-<area href="structyage_1_1LogSink_1_1Model.html" alt="yage::LogSink::Model&lt; T &gt;" shape="rect" coords="0,56,163,80"/>
-</map>
- </div></div>
+
+<p><code>#include &lt;<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
-<tr class="memitem:ada9b09f3614787df485134262b1bc7f1"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#ada9b09f3614787df485134262b1bc7f1">~Concept</a> ()=default</td></tr>
-<tr class="separator:ada9b09f3614787df485134262b1bc7f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1d46d97ab5cec0d30b86fda9d20cd69d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#a1d46d97ab5cec0d30b86fda9d20cd69d">clone</a> () const =0</td></tr>
-<tr class="separator:a1d46d97ab5cec0d30b86fda9d20cd69d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b752fd501daae85f1b78e5d0df912ac"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1LogSink_1_1Concept.html#a3b752fd501daae85f1b78e5d0df912ac">write</a> (const <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;meta, const std::string &amp;msg) const =0</td></tr>
-<tr class="separator:a3b752fd501daae85f1b78e5d0df912ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a48f630fdb7c1a3f4eecd05996b560844"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844">RenderBatch</a> (GLint offset_i, GLsizei num_vertices_i, GLuint texture_i)</td></tr>
+<tr class="separator:a48f630fdb7c1a3f4eecd05996b560844"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a7f58b6967f0a68aa5624e0504c78a422"><td class="memItemLeft" align="right" valign="top">GLint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422">offset</a></td></tr>
+<tr class="separator:a7f58b6967f0a68aa5624e0504c78a422"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27ed6f3911a6d7c8c2b6b4e5a5889b29"><td class="memItemLeft" align="right" valign="top">GLsizei&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29">num_vertices</a></td></tr>
+<tr class="separator:a27ed6f3911a6d7c8c2b6b4e5a5889b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abf26b15420f34052270a1204d89ee687"><td class="memItemLeft" align="right" valign="top">GLuint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687">texture</a></td></tr>
+<tr class="separator:abf26b15420f34052270a1204d89ee687"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="ada9b09f3614787df485134262b1bc7f1"></a>
+<a class="anchor" id="a48f630fdb7c1a3f4eecd05996b560844"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -141,93 +140,85 @@ Public Member Functions</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">virtual yage::LogSink::Concept::~Concept </td>
+ <td class="memname">yage::details::RenderBatch::RenderBatch </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">GLint&#160;</td>
+ <td class="paramname"><em>offset_i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">GLsizei&#160;</td>
+ <td class="paramname"><em>num_vertices_i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">GLuint&#160;</td>
+ <td class="paramname"><em>texture_i</em>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a1d46d97ab5cec0d30b86fda9d20cd69d"></a>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a27ed6f3911a6d7c8c2b6b4e5a5889b29"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">virtual <a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a>* yage::LogSink::Concept::clone </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="memname">GLsizei yage::details::RenderBatch::num_vertices</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
-<p>Implemented in <a class="el" href="structyage_1_1LogSink_1_1Model.html#a30f256cae13bc0c1a0a93cae4909feaf">yage::LogSink::Model&lt; T &gt;</a>.</p>
-
</div>
</div>
-<a class="anchor" id="a3b752fd501daae85f1b78e5d0df912ac"></a>
+<a class="anchor" id="a7f58b6967f0a68aa5624e0504c78a422"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">virtual void yage::LogSink::Concept::write </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structyage_1_1LogMessage_1_1Meta.html">LogMessage::Meta</a> &amp;&#160;</td>
- <td class="paramname"><em>meta</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string &amp;&#160;</td>
- <td class="paramname"><em>msg</em>&#160;</td>
+ <td class="memname">GLint yage::details::RenderBatch::offset</td>
</tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abf26b15420f34052270a1204d89ee687"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td></td>
- <td>)</td>
- <td></td><td> const</td>
+ <td class="memname">GLuint yage::details::RenderBatch::texture</td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
-<p>Implemented in <a class="el" href="structyage_1_1LogSink_1_1Model.html#ae61438d2927d21b4af8f6ff2acc38224">yage::LogSink::Model&lt; T &gt;</a>.</p>
-
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>yage/core/<a class="el" href="logsink_8h_source.html">logsink.h</a></li>
+<li>yage/render/<a class="el" href="spritebatch_8h_source.html">spritebatch.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="classyage_1_1LogSink.html">LogSink</a></li><li class="navelem"><a class="el" href="structyage_1_1LogSink_1_1Concept.html">Concept</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="namespaceyage.html">yage</a></li><li class="navelem"><a class="el" href="namespaceyage_1_1details.html">details</a></li><li class="navelem"><a class="el" href="structyage_1_1details_1_1RenderBatch.html">RenderBatch</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/structyage_1_1details_1_1RenderBatch.js b/structyage_1_1details_1_1RenderBatch.js
new file mode 100644
index 00000000..797fe5b8
--- /dev/null
+++ b/structyage_1_1details_1_1RenderBatch.js
@@ -0,0 +1,7 @@
+var structyage_1_1details_1_1RenderBatch =
+[
+ [ "RenderBatch", "structyage_1_1details_1_1RenderBatch.html#a48f630fdb7c1a3f4eecd05996b560844", null ],
+ [ "num_vertices", "structyage_1_1details_1_1RenderBatch.html#a27ed6f3911a6d7c8c2b6b4e5a5889b29", null ],
+ [ "offset", "structyage_1_1details_1_1RenderBatch.html#a7f58b6967f0a68aa5624e0504c78a422", null ],
+ [ "texture", "structyage_1_1details_1_1RenderBatch.html#abf26b15420f34052270a1204d89ee687", null ]
+]; \ No newline at end of file
diff --git a/syncqueue_8h.html b/syncqueue_8h.html
index 1ee6eaf7..cec9507f 100644
--- a/syncqueue_8h.html
+++ b/syncqueue_8h.html
@@ -133,7 +133,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -141,7 +142,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li><li class="navelem"><a class="el" href="syncqueue_8h.html">syncqueue.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/syncqueue_8h_source.html b/syncqueue_8h_source.html
index e4f4b748..40b19d15 100644
--- a/syncqueue_8h_source.html
+++ b/syncqueue_8h_source.html
@@ -133,9 +133,9 @@ $(document).ready(function(){initNavTree('syncqueue_8h_source.html','');});
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1">push</a>(<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> &amp;&amp;item);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968"> 33</a></span>&#160; std::queue&lt;T&gt; <a class="code" href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">queue_</a>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b"> 34</a></span>&#160; std::mutex <a class="code" href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">mutex_</a>;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4"> 35</a></span>&#160; std::condition_variable <a class="code" href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">cond_</a>;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::queue&lt;T&gt; queue_;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; std::mutex mutex_;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; std::condition_variable cond_;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;};</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// Template definitions</span></div>
@@ -193,11 +193,8 @@ $(document).ready(function(){initNavTree('syncqueue_8h_source.html','');});
<div class="ttc" id="classyage_1_1SyncQueue_html_a0c8aa1c22e3e6d5094dbdeb88cff426b"><div class="ttname"><a href="classyage_1_1SyncQueue.html#a0c8aa1c22e3e6d5094dbdeb88cff426b">yage::SyncQueue::SyncQueue</a></div><div class="ttdeci">SyncQueue()=default</div></div>
<div class="ttc" id="classyage_1_1SyncQueue_html_a43e4ba65c8e367ed55da9b8e3e1567b6"><div class="ttname"><a href="classyage_1_1SyncQueue.html#a43e4ba65c8e367ed55da9b8e3e1567b6">yage::SyncQueue::operator=</a></div><div class="ttdeci">SyncQueue &amp; operator=(const SyncQueue &amp;)=delete</div></div>
<div class="ttc" id="classyage_1_1SyncQueue_html_a1f7f099e1347b82c1f2b72a5352ca05e"><div class="ttname"><a href="classyage_1_1SyncQueue.html#a1f7f099e1347b82c1f2b72a5352ca05e">yage::SyncQueue::pop</a></div><div class="ttdeci">T pop()</div><div class="ttdef"><b>Definition:</b> syncqueue.h:41</div></div>
-<div class="ttc" id="classyage_1_1SyncQueue_html_af1682d934e8a71dad6718977240e83e4"><div class="ttname"><a href="classyage_1_1SyncQueue.html#af1682d934e8a71dad6718977240e83e4">yage::SyncQueue::cond_</a></div><div class="ttdeci">std::condition_variable cond_</div><div class="ttdef"><b>Definition:</b> syncqueue.h:35</div></div>
-<div class="ttc" id="classyage_1_1SyncQueue_html_a273dec7f58d6a727d32dcfc9b3c9622b"><div class="ttname"><a href="classyage_1_1SyncQueue.html#a273dec7f58d6a727d32dcfc9b3c9622b">yage::SyncQueue::mutex_</a></div><div class="ttdeci">std::mutex mutex_</div><div class="ttdef"><b>Definition:</b> syncqueue.h:34</div></div>
<div class="ttc" id="classyage_1_1SyncQueue_html_a4ef8940b49b9c1b7a213fd38847370b1"><div class="ttname"><a href="classyage_1_1SyncQueue.html#a4ef8940b49b9c1b7a213fd38847370b1">yage::SyncQueue::push</a></div><div class="ttdeci">void push(const T &amp;item)</div><div class="ttdef"><b>Definition:</b> syncqueue.h:68</div></div>
<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822ab9ece18c950afbfa6b0fdbfa4ff731d3">yage::key::T</a></div></div>
-<div class="ttc" id="classyage_1_1SyncQueue_html_ae554585c8b44da0db79a0767c1b90968"><div class="ttname"><a href="classyage_1_1SyncQueue.html#ae554585c8b44da0db79a0767c1b90968">yage::SyncQueue::queue_</a></div><div class="ttdeci">std::queue&lt; T &gt; queue_</div><div class="ttdef"><b>Definition:</b> syncqueue.h:33</div></div>
<div class="ttc" id="classyage_1_1SyncQueue_html"><div class="ttname"><a href="classyage_1_1SyncQueue.html">yage::SyncQueue</a></div><div class="ttdef"><b>Definition:</b> syncqueue.h:20</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -205,7 +202,7 @@ $(document).ready(function(){initNavTree('syncqueue_8h_source.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_48a91ae829881cbedcfc124d2027890d.html">util</a></li><li class="navelem"><a class="el" href="syncqueue_8h.html">syncqueue.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/texture_8h.html b/texture_8h.html
index 5d6f9454..bb4ea606 100644
--- a/texture_8h.html
+++ b/texture_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/texture.h File Reference</title>
+<title>YAGE: yage/data/texture.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -131,15 +131,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="texture_8h.html">texture.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="texture_8h.html">texture.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/texture_8h_source.html b/texture_8h_source.html
index ff0d2c50..2ac224da 100644
--- a/texture_8h_source.html
+++ b/texture_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/texture.h Source File</title>
+<title>YAGE: yage/data/texture.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -109,8 +109,8 @@ $(document).ready(function(){initNavTree('texture_8h_source.html','');});
</div><!--header-->
<div class="contents">
<a href="texture_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef GL_TEXTURE_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define GL_TEXTURE_H</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_TEXTURE_H</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_TEXTURE_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
@@ -121,31 +121,35 @@ $(document).ready(function(){initNavTree('texture_8h_source.html','');});
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968"> 18</a></span>&#160; GLuint <a class="code" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a>;</div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598"> 19</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a>;</div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e"> 20</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a>;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5"> 22</a></span>&#160; <a class="code" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">Texture</a>() : <a class="code" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a>(0), <a class="code" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a>(0), <a class="code" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a>(0) {}</div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046"> 21</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">x</a>;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0"> 22</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">y</a>;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c"> 24</a></span>&#160; <a class="code" href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c">Texture</a>(GLuint id_i, <span class="keywordtype">int</span> width_i, <span class="keywordtype">int</span> height_i)</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; : <a class="code" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a>(id_i), <a class="code" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a>(width_i), <a class="code" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a>(height_i)</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;};</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5"> 24</a></span>&#160; <a class="code" href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">Texture</a>() : <a class="code" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a>(0), <a class="code" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a>(0), <a class="code" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a>(0), <a class="code" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">x</a>(0), <a class="code" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">y</a>(0) {}</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850"> 26</a></span>&#160; <a class="code" href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850">Texture</a>(GLuint id_i, <span class="keywordtype">int</span> width_i, <span class="keywordtype">int</span> height_i, <span class="keywordtype">int</span> x_i = 1, <span class="keywordtype">int</span> y_i = 1)</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; : <a class="code" href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">id</a>(id_i), <a class="code" href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">width</a>(width_i), <a class="code" href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">height</a>(height_i), <a class="code" href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">x</a>(x_i), <a class="code" href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">y</a>(y_i)</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="structyage_1_1Texture_html_a4bfae86da1ef1930238291660223a8f0"><div class="ttname"><a href="structyage_1_1Texture.html#a4bfae86da1ef1930238291660223a8f0">yage::Texture::y</a></div><div class="ttdeci">int y</div><div class="ttdef"><b>Definition:</b> texture.h:22</div></div>
+<div class="ttc" id="structyage_1_1Texture_html_a7ecf257a7663cb0523d41c0519380046"><div class="ttname"><a href="structyage_1_1Texture.html#a7ecf257a7663cb0523d41c0519380046">yage::Texture::x</a></div><div class="ttdeci">int x</div><div class="ttdef"><b>Definition:</b> texture.h:21</div></div>
<div class="ttc" id="structyage_1_1Texture_html_a5ce16ac8ad034f7042620a418783b41e"><div class="ttname"><a href="structyage_1_1Texture.html#a5ce16ac8ad034f7042620a418783b41e">yage::Texture::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> texture.h:20</div></div>
<div class="ttc" id="structyage_1_1Texture_html"><div class="ttname"><a href="structyage_1_1Texture.html">yage::Texture</a></div><div class="ttdef"><b>Definition:</b> texture.h:17</div></div>
-<div class="ttc" id="structyage_1_1Texture_html_a9af4689df9f99c5074b7aa5d5857775c"><div class="ttname"><a href="structyage_1_1Texture.html#a9af4689df9f99c5074b7aa5d5857775c">yage::Texture::Texture</a></div><div class="ttdeci">Texture(GLuint id_i, int width_i, int height_i)</div><div class="ttdef"><b>Definition:</b> texture.h:24</div></div>
+<div class="ttc" id="structyage_1_1Texture_html_af0a85aa4202d12fca9c1f52085d26850"><div class="ttname"><a href="structyage_1_1Texture.html#af0a85aa4202d12fca9c1f52085d26850">yage::Texture::Texture</a></div><div class="ttdeci">Texture(GLuint id_i, int width_i, int height_i, int x_i=1, int y_i=1)</div><div class="ttdef"><b>Definition:</b> texture.h:26</div></div>
<div class="ttc" id="structyage_1_1Texture_html_ad42f41cc57ed7a20928382f6557dc598"><div class="ttname"><a href="structyage_1_1Texture.html#ad42f41cc57ed7a20928382f6557dc598">yage::Texture::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> texture.h:19</div></div>
-<div class="ttc" id="structyage_1_1Texture_html_a0cef080bceaaf5e702985f5494ea35d5"><div class="ttname"><a href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">yage::Texture::Texture</a></div><div class="ttdeci">Texture()</div><div class="ttdef"><b>Definition:</b> texture.h:22</div></div>
+<div class="ttc" id="structyage_1_1Texture_html_a0cef080bceaaf5e702985f5494ea35d5"><div class="ttname"><a href="structyage_1_1Texture.html#a0cef080bceaaf5e702985f5494ea35d5">yage::Texture::Texture</a></div><div class="ttdeci">Texture()</div><div class="ttdef"><b>Definition:</b> texture.h:24</div></div>
<div class="ttc" id="structyage_1_1Texture_html_a26386c2709b906ec07c9a1bb8daf2968"><div class="ttname"><a href="structyage_1_1Texture.html#a26386c2709b906ec07c9a1bb8daf2968">yage::Texture::id</a></div><div class="ttdeci">GLuint id</div><div class="ttdef"><b>Definition:</b> texture.h:18</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="texture_8h.html">texture.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="texture_8h.html">texture.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/texturecache_8cpp.html b/texturecache_8cpp.html
index a76297d3..8227f250 100644
--- a/texturecache_8cpp.html
+++ b/texturecache_8cpp.html
@@ -115,8 +115,8 @@ $(document).ready(function(){initNavTree('texturecache_8cpp.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="texturecache_8h_source.html">texturecache.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="imageloader_8h_source.html">imageloader.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
@@ -125,7 +125,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -133,7 +134,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="texturecache_8cpp.html">texturecache.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/texturecache_8h.html b/texturecache_8h.html
index e0f2362e..a58536f7 100644
--- a/texturecache_8h.html
+++ b/texturecache_8h.html
@@ -115,7 +115,7 @@ $(document).ready(function(){initNavTree('texturecache_8h.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">texture.h</a>&quot;</code><br/>
+<div class="textblock"><code>#include &quot;<a class="el" href="texture_8h_source.html">../data/texture.h</a>&quot;</code><br/>
<code>#include &lt;unordered_map&gt;</code><br/>
</div>
<p><a href="texturecache_8h_source.html">Go to the source code of this file.</a></p>
@@ -132,7 +132,8 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -140,7 +141,7 @@ Namespaces</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="texturecache_8h.html">texturecache.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/texturecache_8h_source.html b/texturecache_8h_source.html
index 709aca96..7f2d0601 100644
--- a/texturecache_8h_source.html
+++ b/texturecache_8h_source.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('texturecache_8h_source.html','');});
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef TEXTURE_CACHE_H</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TEXTURE_CACHE_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture_8h.html">texture.h</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;../data/texture.h&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;unordered_map&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
@@ -122,32 +122,30 @@ $(document).ready(function(){initNavTree('texturecache_8h_source.html','');});
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classyage_1_1TextureCache.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1TextureCache.html">TextureCache</a></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323"> 22</a></span>&#160; std::unordered_map&lt;std::string, Texture&gt; <a class="code" href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">texture_map_</a>;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; std::unordered_map&lt;std::string, Texture&gt; texture_map_;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">TextureCache</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">getTexture</a>(<span class="keyword">const</span> std::string &amp;texture_path);</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">getTexture</a>(<span class="keyword">const</span> std::string &amp;texture_path, <span class="keywordtype">int</span> x = 1, <span class="keywordtype">int</span> y = 1);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="structyage_1_1Texture.html">Texture</a> <a class="code" href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">getTextureFromSpriteSheet</a>();</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;};</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;} <span class="comment">// namespace yage</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classyage_1_1TextureCache_html_acec85e497e3dbcded344f4bed6b4389e"><div class="ttname"><a href="classyage_1_1TextureCache.html#acec85e497e3dbcded344f4bed6b4389e">yage::TextureCache::getTexture</a></div><div class="ttdeci">Texture getTexture(const std::string &amp;texture_path)</div><div class="ttdef"><b>Definition:</b> texturecache.cpp:16</div></div>
-<div class="ttc" id="classyage_1_1TextureCache_html_aecd72d2dd02efb862548e4def6f6b323"><div class="ttname"><a href="classyage_1_1TextureCache.html#aecd72d2dd02efb862548e4def6f6b323">yage::TextureCache::texture_map_</a></div><div class="ttdeci">std::unordered_map&lt; std::string, Texture &gt; texture_map_</div><div class="ttdef"><b>Definition:</b> texturecache.h:22</div></div>
-<div class="ttc" id="texture_8h_html"><div class="ttname"><a href="texture_8h.html">texture.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="classyage_1_1TextureCache_html_a5f6af0bd513dd393061b2d9d18362692"><div class="ttname"><a href="classyage_1_1TextureCache.html#a5f6af0bd513dd393061b2d9d18362692">yage::TextureCache::TextureCache</a></div><div class="ttdeci">TextureCache()=default</div></div>
<div class="ttc" id="structyage_1_1Texture_html"><div class="ttname"><a href="structyage_1_1Texture.html">yage::Texture</a></div><div class="ttdef"><b>Definition:</b> texture.h:17</div></div>
<div class="ttc" id="classyage_1_1TextureCache_html_abb785ce35eb847c02de67dc9e6e06bcd"><div class="ttname"><a href="classyage_1_1TextureCache.html#abb785ce35eb847c02de67dc9e6e06bcd">yage::TextureCache::getTextureFromSpriteSheet</a></div><div class="ttdeci">Texture getTextureFromSpriteSheet()</div></div>
<div class="ttc" id="classyage_1_1TextureCache_html"><div class="ttname"><a href="classyage_1_1TextureCache.html">yage::TextureCache</a></div><div class="ttdef"><b>Definition:</b> texturecache.h:19</div></div>
+<div class="ttc" id="classyage_1_1TextureCache_html_ad4929640230f9a74fcd634416fe0974f"><div class="ttname"><a href="classyage_1_1TextureCache.html#ad4929640230f9a74fcd634416fe0974f">yage::TextureCache::getTexture</a></div><div class="ttdeci">Texture getTexture(const std::string &amp;texture_path, int x=1, int y=1)</div><div class="ttdef"><b>Definition:</b> texturecache.cpp:16</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="texturecache_8h.html">texturecache.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/todo.html b/todo.html
index 93c2899f..bd6faca0 100644
--- a/todo.html
+++ b/todo.html
@@ -103,11 +103,13 @@ $(document).ready(function(){initNavTree('todo.html','');});
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
-<dt><a class="anchor" id="_todo000003"></a>Namespace <a class="el" href="namespaceyage.html">yage</a> </dt>
+<dt><a class="anchor" id="_todo000004"></a>Namespace <a class="el" href="namespaceyage.html">yage</a> </dt>
<dd><p class="startdd">remove the include to make compilation faster </p>
<p class="enddd">think of removing this, by, for example, using a pointer This could be more efficient when copying the texture out of the spritesheet. </p>
</dd>
-<dt><a class="anchor" id="_todo000005"></a>Member <a class="el" href="namespaceyage_1_1matrix.html#a277125ad9fa06a7119c59d350e129985">yage::matrix::multiply</a> (const Matrix&lt; M, N, T &gt; &amp;m1, const Matrix&lt; P, Q, T &gt; &amp;m2)</dt>
+<dt><a class="anchor" id="_todo000003"></a>Member <a class="el" href="classyage_1_1Camera.html#a99f0af50db990c5558fd0b7b82f3978c">yage::Camera::update</a> (Shader &amp;program)</dt>
+<dd>Make this function more general to be able to be able to use any parametre in then shader as the camera matrix and not make it dependent on it being <code>P</code>. </dd>
+<dt><a class="anchor" id="_todo000006"></a>Member <a class="el" href="namespaceyage_1_1matrix.html#a277125ad9fa06a7119c59d350e129985">yage::matrix::multiply</a> (const Matrix&lt; M, N, T &gt; &amp;m1, const Matrix&lt; P, Q, T &gt; &amp;m2)</dt>
<dd>Think if this should be a static_assert. </dd>
</dl>
</div></div><!-- contents -->
@@ -115,7 +117,7 @@ $(document).ready(function(){initNavTree('todo.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/todolist_8dox.html b/todolist_8dox.html
index 7d8a0dfe..b8a0df7d 100644
--- a/todolist_8dox.html
+++ b/todolist_8dox.html
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('todolist_8dox.html','');});
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="todolist_8dox.html">todolist.dox</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/vertex_8h.html b/vertex_8h.html
index 263dfab9..7bf248b6 100644
--- a/vertex_8h.html
+++ b/vertex_8h.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/vertex.h File Reference</title>
+<title>YAGE: yage/data/vertex.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -137,15 +137,16 @@ Namespaces</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="vertex_8h.html">vertex.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="vertex_8h.html">vertex.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/vertex_8h_source.html b/vertex_8h_source.html
index 00a9366f..67aa3ef0 100644
--- a/vertex_8h_source.html
+++ b/vertex_8h_source.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
-<title>YAGE: yage/core/vertex.h Source File</title>
+<title>YAGE: yage/data/vertex.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -216,8 +216,8 @@ $(document).ready(function(){initNavTree('vertex_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="vertex_8h.html">vertex.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_d09e80fdcf0bb585bbe3b7099c52d028.html">data</a></li><li class="navelem"><a class="el" href="vertex_8h.html">vertex.h</a></li>
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/window_8cpp.html b/window_8cpp.html
index 2fdd7fc7..0ed26651 100644
--- a/window_8cpp.html
+++ b/window_8cpp.html
@@ -105,8 +105,7 @@ $(document).ready(function(){initNavTree('window_8cpp.html','');});
<div class="header">
<div class="summary">
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#func-members">Functions</a> </div>
+<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">window.cpp File Reference</div> </div>
</div><!--header-->
@@ -116,6 +115,9 @@ $(document).ready(function(){initNavTree('window_8cpp.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="window_8h_source.html">window.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="input_8h_source.html">../data/input.h</a>&quot;</code><br/>
+<code>#include &lt;glad/glad.h&gt;</code><br/>
+<code>#include &lt;GLFW/glfw3.h&gt;</code><br/>
<code>#include &lt;stdexcept&gt;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
@@ -123,14 +125,10 @@ Namespaces</h2></td></tr>
<tr class="memitem:namespaceyage"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html">yage</a></td></tr>
<tr class="memdesc:namespaceyage"><td class="mdescLeft">&#160;</td><td class="mdescRight">Project namespace. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a7d04f91ba8586cb6dfac030f83c9a9ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceyage.html#a7d04f91ba8586cb6dfac030f83c9a9ec">yage::key_callback</a> (GLFWwindow *window, int key, int scanCode, int action, int mods)</td></tr>
-<tr class="separator:a7d04f91ba8586cb6dfac030f83c9a9ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -138,7 +136,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="window_8cpp.html">window.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/window_8cpp.js b/window_8cpp.js
deleted file mode 100644
index a39d788d..00000000
--- a/window_8cpp.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var window_8cpp =
-[
- [ "key_callback", "window_8cpp.html#a7d04f91ba8586cb6dfac030f83c9a9ec", null ]
-]; \ No newline at end of file
diff --git a/window_8h.html b/window_8h.html
index efbd6508..3d4f9656 100644
--- a/window_8h.html
+++ b/window_8h.html
@@ -116,9 +116,7 @@ $(document).ready(function(){initNavTree('window_8h.html','');});
<p><hr/>
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;glad/glad.h&gt;</code><br/>
-<code>#include &lt;GLFW/glfw3.h&gt;</code><br/>
-<code>#include &lt;string&gt;</code><br/>
+<div class="textblock"><code>#include &lt;string&gt;</code><br/>
</div>
<p><a href="window_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
@@ -143,7 +141,8 @@ Enumerations</h2></td></tr>
<tr class="separator:a09d41deeced5fca5df9dc680c9e77c38"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -151,7 +150,7 @@ Enumerations</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="window_8h.html">window.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/window_8h_source.html b/window_8h_source.html
index edfbf65a..39000bae 100644
--- a/window_8h_source.html
+++ b/window_8h_source.html
@@ -109,77 +109,80 @@ $(document).ready(function(){initNavTree('window_8h_source.html','');});
</div><!--header-->
<div class="contents">
<a href="window_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifndef WINDOW_H</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define WINDOW_H</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef YAGE_CORE_WINDOW_H</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_CORE_WINDOW_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">class </span>GLFWwindow;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a>;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// window flags that can change it&#39;s appearance</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38"> 25</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">WindowFlags</a> : <span class="keywordtype">unsigned</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"> 26</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">SHOWN</a> = 0x1,</div>
-<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"> 27</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">HIDDEN</a> = 0x2,</div>
-<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"> 28</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">FULLSCREEN</a> = 0x4,</div>
-<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"> 29</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">BORDERLESS</a> = 0x8,</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// window wrapper around GLFWwindow pointer</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classyage_1_1Window.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Window.html">Window</a></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787"> 37</a></span>&#160; GLFWwindow *<a class="code" href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">window_</a> = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>();</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Window.html">Window</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>(<a class="code" href="classyage_1_1Window.html">Window</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0">~Window</a>();</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// window flags that can change it&#39;s appearance</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38"> 22</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">WindowFlags</a> : <span class="keywordtype">unsigned</span> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"> 23</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">SHOWN</a> = 0x1,</div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"> 24</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">HIDDEN</a> = 0x2,</div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"> 25</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">FULLSCREEN</a> = 0x4,</div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"> 26</a></span>&#160; <a class="code" href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">BORDERLESS</a> = 0x8,</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;};</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// window wrapper around GLFWwindow pointer</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classyage_1_1Window.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classyage_1_1Window.html">Window</a></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; GLFWwindow *window_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>();</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Window.html">Window</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">Window</a>(<a class="code" href="classyage_1_1Window.html">Window</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0">~Window</a>();</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classyage_1_1Window.html">Window</a> &amp;<a class="code" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Window.html">Window</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classyage_1_1Window.html">Window</a> &amp;<a class="code" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(<a class="code" href="classyage_1_1Window.html">Window</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classyage_1_1Window.html">Window</a> &amp;<a class="code" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(<span class="keyword">const</span> <a class="code" href="classyage_1_1Window.html">Window</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classyage_1_1Window.html">Window</a> &amp;<a class="code" href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">operator=</a>(<a class="code" href="classyage_1_1Window.html">Window</a> &amp;&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">create</a>(std::string window_name, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">swapBuffer</a>();</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">clearBuffer</a>();</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">hide</a>();</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">show</a>();</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">shouldClose</a>();</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">pollEvents</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;};</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">yage::HIDDEN</a></div><div class="ttdef"><b>Definition:</b> window.h:27</div></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">create</a>(std::string window_name, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">swapBuffer</a>();</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">clearBuffer</a>();</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">hide</a>();</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">show</a>();</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">shouldClose</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">pollEvents</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">keyPressed</a>(<a class="code" href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">key</a> k);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;};</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;} <span class="comment">// namespace yage</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="classyage_1_1Window_html_ae95d8670801c04af43da9e4fcc0e1006"><div class="ttname"><a href="classyage_1_1Window.html#ae95d8670801c04af43da9e4fcc0e1006">yage::Window::keyPressed</a></div><div class="ttdeci">bool keyPressed(key k)</div><div class="ttdef"><b>Definition:</b> window.cpp:115</div></div>
+<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38af7a4d995b268c416a6e01b8dc1555648">yage::HIDDEN</a></div><div class="ttdef"><b>Definition:</b> window.h:24</div></div>
<div class="ttc" id="classyage_1_1Window_html_a7d7bd2f22e095df387e8b5cda2bb484e"><div class="ttname"><a href="classyage_1_1Window.html#a7d7bd2f22e095df387e8b5cda2bb484e">yage::Window::Window</a></div><div class="ttdeci">Window()</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a86d0aa8e9896850b9acfc720b5615359"><div class="ttname"><a href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">yage::Window::swapBuffer</a></div><div class="ttdeci">void swapBuffer()</div><div class="ttdoc">swap the buffer </div><div class="ttdef"><b>Definition:</b> window.cpp:74</div></div>
-<div class="ttc" id="classyage_1_1Window_html_aa421df451f166dfe6441562e92b99115"><div class="ttname"><a href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">yage::Window::hide</a></div><div class="ttdeci">void hide()</div><div class="ttdoc">hide windowProc </div><div class="ttdef"><b>Definition:</b> window.cpp:86</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a7b09e6b3e575a40b99bfb7c685432787"><div class="ttname"><a href="classyage_1_1Window.html#a7b09e6b3e575a40b99bfb7c685432787">yage::Window::window_</a></div><div class="ttdeci">GLFWwindow * window_</div><div class="ttdoc">window handle </div><div class="ttdef"><b>Definition:</b> window.h:37</div></div>
-<div class="ttc" id="classyage_1_1Window_html"><div class="ttname"><a href="classyage_1_1Window.html">yage::Window</a></div><div class="ttdef"><b>Definition:</b> window.h:33</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a5e3b209289bc343609d809d5b7f23cc8"><div class="ttname"><a href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">yage::Window::shouldClose</a></div><div class="ttdeci">bool shouldClose()</div><div class="ttdef"><b>Definition:</b> window.cpp:96</div></div>
-<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">yage::FULLSCREEN</a></div><div class="ttdef"><b>Definition:</b> window.h:28</div></div>
-<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage::WindowFlags</a></div><div class="ttdeci">WindowFlags</div><div class="ttdef"><b>Definition:</b> window.h:25</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a9a8dd109e145c459e52abb3a8861e3a0"><div class="ttname"><a href="classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0">yage::Window::~Window</a></div><div class="ttdeci">~Window()</div><div class="ttdoc">destroys the window handle </div><div class="ttdef"><b>Definition:</b> window.cpp:31</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a0847f40df2aafd7da1c315fa84871f34"><div class="ttname"><a href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">yage::Window::show</a></div><div class="ttdeci">void show()</div><div class="ttdoc">show window </div><div class="ttdef"><b>Definition:</b> window.cpp:91</div></div>
-<div class="ttc" id="classyage_1_1Window_html_afdf3e2826526abc23a4e206c9a8a8745"><div class="ttname"><a href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">yage::Window::create</a></div><div class="ttdeci">void create(std::string window_name, int width, int height)</div><div class="ttdoc">create the window, initialize the handle and update the width and height </div><div class="ttdef"><b>Definition:</b> window.cpp:37</div></div>
-<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">yage::SHOWN</a></div><div class="ttdef"><b>Definition:</b> window.h:26</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a98e2a33820ad63b2c94c56e203ff6e58"><div class="ttname"><a href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">yage::Window::clearBuffer</a></div><div class="ttdeci">void clearBuffer()</div><div class="ttdoc">clear buffer </div><div class="ttdef"><b>Definition:</b> window.cpp:80</div></div>
-<div class="ttc" id="classyage_1_1Window_html_a1a311e27b1e588f0fce540ce040dcbd5"><div class="ttname"><a href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">yage::Window::pollEvents</a></div><div class="ttdeci">void pollEvents() const </div><div class="ttdef"><b>Definition:</b> window.cpp:101</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a86d0aa8e9896850b9acfc720b5615359"><div class="ttname"><a href="classyage_1_1Window.html#a86d0aa8e9896850b9acfc720b5615359">yage::Window::swapBuffer</a></div><div class="ttdeci">void swapBuffer()</div><div class="ttdoc">swap the buffer </div><div class="ttdef"><b>Definition:</b> window.cpp:83</div></div>
+<div class="ttc" id="classyage_1_1Window_html_aa421df451f166dfe6441562e92b99115"><div class="ttname"><a href="classyage_1_1Window.html#aa421df451f166dfe6441562e92b99115">yage::Window::hide</a></div><div class="ttdeci">void hide()</div><div class="ttdoc">hide windowProc </div><div class="ttdef"><b>Definition:</b> window.cpp:95</div></div>
+<div class="ttc" id="classyage_1_1Window_html"><div class="ttname"><a href="classyage_1_1Window.html">yage::Window</a></div><div class="ttdef"><b>Definition:</b> window.h:30</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a5e3b209289bc343609d809d5b7f23cc8"><div class="ttname"><a href="classyage_1_1Window.html#a5e3b209289bc343609d809d5b7f23cc8">yage::Window::shouldClose</a></div><div class="ttdeci">bool shouldClose()</div><div class="ttdef"><b>Definition:</b> window.cpp:105</div></div>
+<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a409ae568f380139ffa38d7fffa5ffb2f">yage::FULLSCREEN</a></div><div class="ttdef"><b>Definition:</b> window.h:25</div></div>
+<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38">yage::WindowFlags</a></div><div class="ttdeci">WindowFlags</div><div class="ttdef"><b>Definition:</b> window.h:22</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a9a8dd109e145c459e52abb3a8861e3a0"><div class="ttname"><a href="classyage_1_1Window.html#a9a8dd109e145c459e52abb3a8861e3a0">yage::Window::~Window</a></div><div class="ttdeci">~Window()</div><div class="ttdoc">destroys the window handle </div><div class="ttdef"><b>Definition:</b> window.cpp:38</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a0847f40df2aafd7da1c315fa84871f34"><div class="ttname"><a href="classyage_1_1Window.html#a0847f40df2aafd7da1c315fa84871f34">yage::Window::show</a></div><div class="ttdeci">void show()</div><div class="ttdoc">show window </div><div class="ttdef"><b>Definition:</b> window.cpp:100</div></div>
+<div class="ttc" id="classyage_1_1Window_html_afdf3e2826526abc23a4e206c9a8a8745"><div class="ttname"><a href="classyage_1_1Window.html#afdf3e2826526abc23a4e206c9a8a8745">yage::Window::create</a></div><div class="ttdeci">void create(std::string window_name, int width, int height)</div><div class="ttdoc">create the window, initialize the handle and update the width and height </div><div class="ttdef"><b>Definition:</b> window.cpp:44</div></div>
+<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38a7c4273d3feb1dc60a55a74c37c3fddd6">yage::SHOWN</a></div><div class="ttdef"><b>Definition:</b> window.h:23</div></div>
+<div class="ttc" id="namespaceyage_html_ad5a9307442e5daa8810aff942564a822"><div class="ttname"><a href="namespaceyage.html#ad5a9307442e5daa8810aff942564a822">yage::key</a></div><div class="ttdeci">key</div><div class="ttdef"><b>Definition:</b> input.h:18</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a98e2a33820ad63b2c94c56e203ff6e58"><div class="ttname"><a href="classyage_1_1Window.html#a98e2a33820ad63b2c94c56e203ff6e58">yage::Window::clearBuffer</a></div><div class="ttdeci">void clearBuffer()</div><div class="ttdoc">clear buffer </div><div class="ttdef"><b>Definition:</b> window.cpp:89</div></div>
+<div class="ttc" id="classyage_1_1Window_html_a1a311e27b1e588f0fce540ce040dcbd5"><div class="ttname"><a href="classyage_1_1Window.html#a1a311e27b1e588f0fce540ce040dcbd5">yage::Window::pollEvents</a></div><div class="ttdeci">void pollEvents() const </div><div class="ttdef"><b>Definition:</b> window.cpp:110</div></div>
<div class="ttc" id="classyage_1_1Window_html_a5247a4164bf0006fe9f034cd27c5b6db"><div class="ttname"><a href="classyage_1_1Window.html#a5247a4164bf0006fe9f034cd27c5b6db">yage::Window::operator=</a></div><div class="ttdeci">Window &amp; operator=(const Window &amp;)=delete</div></div>
-<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">yage::BORDERLESS</a></div><div class="ttdef"><b>Definition:</b> window.h:29</div></div>
+<div class="ttc" id="namespaceyage_html_a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970"><div class="ttname"><a href="namespaceyage.html#a09d41deeced5fca5df9dc680c9e77c38afa8ece0eef17c604369ca69bc4b09970">yage::BORDERLESS</a></div><div class="ttdef"><b>Definition:</b> window.h:26</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="dir_11841e5da2063fc5766a682aee38e289.html">core</a></li><li class="navelem"><a class="el" href="window_8h.html">window.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/yage_2physics_2README_8md.html b/yage_2physics_2README_8md.html
index cc99c2ff..475b32b2 100644
--- a/yage_2physics_2README_8md.html
+++ b/yage_2physics_2README_8md.html
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('yage_2physics_2README_8md.html','');})
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="yage_2physics_2README_8md.html">README.md</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/yage_8cpp.html b/yage_8cpp.html
index 0f215abc..1f46e921 100644
--- a/yage_8cpp.html
+++ b/yage_8cpp.html
@@ -138,7 +138,8 @@ Functions</h2></td></tr>
<tr class="separator:ac9d8c7327204686b3c86f4ab48672618"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -146,7 +147,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="yage_8cpp.html">yage.cpp</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/yage_8h.html b/yage_8h.html
index ae1e8fe6..faec6372 100644
--- a/yage_8h.html
+++ b/yage_8h.html
@@ -116,27 +116,22 @@ $(document).ready(function(){initNavTree('yage_8h.html','');});
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="camera_8h_source.html">core/camera.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="glslprogram_8h_source.html">core/glslprogram.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="imageloader_8h_source.html">core/imageloader.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="input_8h_source.html">core/input.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="iomanager_8h_source.html">core/iomanager.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="logger_8h_source.html">core/logger.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="logmessage_8h_source.html">core/logmessage.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="logsink_8h_source.html">core/logsink.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="picopng_8h_source.html">core/picopng.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="resourcemanager_8h_source.html">core/resourcemanager.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="spritebatch_8h_source.html">core/spritebatch.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="spritesheet_8h_source.html">core/spritesheet.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="texture_8h_source.html">core/texture.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="vertex_8h_source.html">core/vertex.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="window_8h_source.html">core/window.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="input_8h_source.html">data/input.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="texture_8h_source.html">data/texture.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="vertex_8h_source.html">data/vertex.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="matrix_8h_source.html">math/matrix.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="body_8h_source.html">physics/body.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="particlebody_8h_source.html">physics/particlebody.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="rectanglecollider_8h_source.html">physics/rectanglecollider.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="rigidbody_8h_source.html">physics/rigidbody.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="matrix_8h_source.html">math/matrix.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="active_8h_source.html">util/active.h</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="syncqueue_8h_source.html">util/syncqueue.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="shader_8h_source.html">render/shader.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="spritebatch_8h_source.html">render/spritebatch.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="drawable_8h_source.html">render/drawable.h</a>&quot;</code><br/>
</div>
<p><a href="yage_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
@@ -158,7 +153,8 @@ Functions</h2></td></tr>
<tr class="separator:ac9d8c7327204686b3c86f4ab48672618"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
+<div class="textblock"><hr/>
+ <p>Copyright (c) 2017 Yann Herklotz Grave <a href="#" onclick="location.href='mai'+'lto:'+'ymh'+'er'+'klo'+'tz'+'@gm'+'ai'+'l.c'+'om'; return false;">ymher<span style="display: none;">.nosp@m.</span>klot<span style="display: none;">.nosp@m.</span>z@gma<span style="display: none;">.nosp@m.</span>il.c<span style="display: none;">.nosp@m.</span>om</a> </p>
<h2>MIT License, see LICENSE file for more details. </h2>
</div></div><!-- contents -->
</div><!-- doc-content -->
@@ -166,7 +162,7 @@ Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="yage_8h.html">yage.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
diff --git a/yage_8h_source.html b/yage_8h_source.html
index b6974bfe..8a7f0eac 100644
--- a/yage_8h_source.html
+++ b/yage_8h_source.html
@@ -113,75 +113,62 @@ $(document).ready(function(){initNavTree('yage_8h_source.html','');});
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define YAGE_YAGE_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="camera_8h.html">core/camera.h</a>&quot;</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="glslprogram_8h.html">core/glslprogram.h</a>&quot;</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="imageloader_8h.html">core/imageloader.h</a>&quot;</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="input_8h.html">core/input.h</a>&quot;</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="iomanager_8h.html">core/iomanager.h</a>&quot;</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logger_8h.html">core/logger.h</a>&quot;</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logmessage_8h.html">core/logmessage.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logsink_8h.html">core/logsink.h</a>&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="picopng_8h.html">core/picopng.h</a>&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="resourcemanager_8h.html">core/resourcemanager.h</a>&quot;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spritebatch_8h.html">core/spritebatch.h</a>&quot;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spritesheet_8h.html">core/spritesheet.h</a>&quot;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture_8h.html">core/texture.h</a>&quot;</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vertex_8h.html">core/vertex.h</a>&quot;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="window_8h.html">core/window.h</a>&quot;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="body_8h.html">physics/body.h</a>&quot;</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="particlebody_8h.html">physics/particlebody.h</a>&quot;</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rectanglecollider_8h.html">physics/rectanglecollider.h</a>&quot;</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rigidbody_8h.html">physics/rigidbody.h</a>&quot;</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix_8h.html">math/matrix.h</a>&quot;</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="active_8h.html">util/active.h</a>&quot;</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="syncqueue_8h.html">util/syncqueue.h</a>&quot;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="iomanager_8h.html">core/iomanager.h</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="logger_8h.html">core/logger.h</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="resourcemanager_8h.html">core/resourcemanager.h</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spritesheet_8h.html">core/spritesheet.h</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="window_8h.html">core/window.h</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="input_8h.html">data/input.h</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="texture_8h.html">data/texture.h</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vertex_8h.html">data/vertex.h</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="matrix_8h.html">math/matrix.h</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="body_8h.html">physics/body.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="particlebody_8h.html">physics/particlebody.h</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rectanglecollider_8h.html">physics/rectanglecollider.h</a>&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rigidbody_8h.html">physics/rigidbody.h</a>&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="shader_8h.html">render/shader.h</a>&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spritebatch_8h.html">render/spritebatch.h</a>&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="drawable_8h.html">render/drawable.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span>yage</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">namespace </span>yage</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#a0bd2fedcbe862fdea1ea54b6b7d49bec">glfwErrorCallback</a>(<span class="keywordtype">int</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#a0bd2fedcbe862fdea1ea54b6b7d49bec">glfwErrorCallback</a>(<span class="keywordtype">int</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce">init</a>();</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce">init</a>();</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618">quit</a>();</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;} <span class="comment">// namespace yage</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618">quit</a>();</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;} <span class="comment">// namespace yage</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="rigidbody_8h_html"><div class="ttname"><a href="rigidbody_8h.html">rigidbody.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="namespaceyage_html_ac9d8c7327204686b3c86f4ab48672618"><div class="ttname"><a href="namespaceyage.html#ac9d8c7327204686b3c86f4ab48672618">yage::quit</a></div><div class="ttdeci">void quit()</div><div class="ttdoc">Quit and cleanup yage. </div><div class="ttdef"><b>Definition:</b> yage.cpp:32</div></div>
<div class="ttc" id="window_8h_html"><div class="ttname"><a href="window_8h.html">window.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="input_8h_html"><div class="ttname"><a href="input_8h.html">input.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="body_8h_html"><div class="ttname"><a href="body_8h.html">body.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="camera_8h_html"><div class="ttname"><a href="camera_8h.html">camera.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="imageloader_8h_html"><div class="ttname"><a href="imageloader_8h.html">imageloader.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="texture_8h_html"><div class="ttname"><a href="texture_8h.html">texture.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="iomanager_8h_html"><div class="ttname"><a href="iomanager_8h.html">iomanager.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="namespaceyage_html_a4fc8b4d2a19d4c7f7f1bd42a788827ce"><div class="ttname"><a href="namespaceyage.html#a4fc8b4d2a19d4c7f7f1bd42a788827ce">yage::init</a></div><div class="ttdeci">void init()</div><div class="ttdoc">Initializes yage. </div><div class="ttdef"><b>Definition:</b> yage.cpp:24</div></div>
+<div class="ttc" id="shader_8h_html"><div class="ttname"><a href="shader_8h.html">shader.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="namespaceyage_html_a0bd2fedcbe862fdea1ea54b6b7d49bec"><div class="ttname"><a href="namespaceyage.html#a0bd2fedcbe862fdea1ea54b6b7d49bec">yage::glfwErrorCallback</a></div><div class="ttdeci">void glfwErrorCallback(int, const char *description)</div><div class="ttdef"><b>Definition:</b> yage.cpp:19</div></div>
<div class="ttc" id="rectanglecollider_8h_html"><div class="ttname"><a href="rectanglecollider_8h.html">rectanglecollider.h</a></div><div class="ttdoc"> </div></div>
+<div class="ttc" id="drawable_8h_html"><div class="ttname"><a href="drawable_8h.html">drawable.h</a></div></div>
<div class="ttc" id="spritesheet_8h_html"><div class="ttname"><a href="spritesheet_8h.html">spritesheet.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="vertex_8h_html"><div class="ttname"><a href="vertex_8h.html">vertex.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="matrix_8h_html"><div class="ttname"><a href="matrix_8h.html">matrix.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="resourcemanager_8h_html"><div class="ttname"><a href="resourcemanager_8h.html">resourcemanager.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="picopng_8h_html"><div class="ttname"><a href="picopng_8h.html">picopng.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="logmessage_8h_html"><div class="ttname"><a href="logmessage_8h.html">logmessage.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="logger_8h_html"><div class="ttname"><a href="logger_8h.html">logger.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="syncqueue_8h_html"><div class="ttname"><a href="syncqueue_8h.html">syncqueue.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="spritebatch_8h_html"><div class="ttname"><a href="spritebatch_8h.html">spritebatch.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="glslprogram_8h_html"><div class="ttname"><a href="glslprogram_8h.html">glslprogram.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="active_8h_html"><div class="ttname"><a href="active_8h.html">active.h</a></div><div class="ttdoc"> </div></div>
<div class="ttc" id="particlebody_8h_html"><div class="ttname"><a href="particlebody_8h.html">particlebody.h</a></div><div class="ttdoc"> </div></div>
-<div class="ttc" id="logsink_8h_html"><div class="ttname"><a href="logsink_8h.html">logsink.h</a></div><div class="ttdoc"> </div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_0a5be4b85c8e2c05f7a9f5a803f53125.html">yage</a></li><li class="navelem"><a class="el" href="yage_8h.html">yage.h</a></li>
- <li class="footer">Generated on Sat Dec 23 2017 01:50:21 for YAGE by
+ <li class="footer">Generated on Sat Jan 6 2018 11:36:17 for YAGE by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>