From 47a6fe08ffd4347872b8699449f7604512fce43e Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Fri, 19 Jan 2024 15:41:43 +0100 Subject: [PATCH] what it workkks now way \! --- MacroLibX/example/42_logo.bmp | Bin 0 -> 30810 bytes MacroLibX/example/42_logo.jpg | Bin 0 -> 1652 bytes MacroLibX/example/build.sh | 2 +- MacroLibX/example/main.c | 176 +++++++++++------- MacroLibX/includes/mlx.h | 18 +- MacroLibX/scripts/fetch_dependencies.sh | 0 MacroLibX/src/core/application.cpp | 9 +- MacroLibX/src/core/application.h | 8 +- MacroLibX/src/core/application.inl | 11 +- MacroLibX/src/core/bridge.cpp | 52 +++++- MacroLibX/src/core/fps.cpp | 44 +++++ MacroLibX/src/core/fps.h | 41 ++++ MacroLibX/src/platform/inputs.cpp | 5 +- MacroLibX/src/platform/inputs.h | 7 +- MacroLibX/src/platform/window.cpp | 3 +- MacroLibX/src/renderer/core/memory.cpp | 6 +- .../descriptors/vk_descriptor_pool.cpp | 3 +- .../renderer/descriptors/vk_descriptor_pool.h | 4 +- .../descriptors/vk_descriptor_set.cpp | 18 +- .../renderer/descriptors/vk_descriptor_set.h | 4 +- MacroLibX/src/renderer/images/texture.cpp | 3 +- .../src/renderer/images/texture_atlas.cpp | 3 +- MacroLibX/src/renderer/images/texture_atlas.h | 5 +- MacroLibX/src/renderer/images/vk_image.cpp | 10 +- MacroLibX/src/renderer/pipeline/pipeline.cpp | 6 +- MacroLibX/src/renderer/renderer.cpp | 18 +- MacroLibX/src/renderer/renderer.h | 5 +- .../renderer/renderpass/vk_render_pass.cpp | 4 +- MacroLibX/src/renderer/texts/font.cpp | 80 ++++---- MacroLibX/src/renderer/texts/font.h | 34 ++-- MacroLibX/src/renderer/texts/font_library.cpp | 69 +++++++ MacroLibX/src/renderer/texts/font_library.h | 52 ++++++ MacroLibX/src/renderer/texts/text.cpp | 14 +- MacroLibX/src/renderer/texts/text.h | 9 +- .../src/renderer/texts/text_descriptor.cpp | 62 +++--- .../src/renderer/texts/text_descriptor.h | 5 +- MacroLibX/src/renderer/texts/text_library.cpp | 3 +- MacroLibX/src/renderer/texts/text_library.h | 3 +- MacroLibX/src/renderer/texts/text_manager.cpp | 20 +- MacroLibX/src/renderer/texts/text_manager.h | 8 +- MacroLibX/third_party/glm/common.hpp | 0 .../third_party/glm/detail/_features.hpp | 0 MacroLibX/third_party/glm/detail/_fixes.hpp | 0 MacroLibX/third_party/glm/detail/_noise.hpp | 0 MacroLibX/third_party/glm/detail/_swizzle.hpp | 0 .../third_party/glm/detail/_swizzle_func.hpp | 0 .../third_party/glm/detail/_vectorize.hpp | 0 .../third_party/glm/detail/compute_common.hpp | 0 .../glm/detail/compute_vector_relational.hpp | 0 .../third_party/glm/detail/func_common.inl | 0 .../glm/detail/func_common_simd.inl | 0 .../glm/detail/func_exponential.inl | 0 .../glm/detail/func_exponential_simd.inl | 0 .../third_party/glm/detail/func_geometric.inl | 0 .../glm/detail/func_geometric_simd.inl | 0 .../third_party/glm/detail/func_integer.inl | 0 .../glm/detail/func_integer_simd.inl | 0 .../third_party/glm/detail/func_matrix.inl | 0 .../glm/detail/func_matrix_simd.inl | 0 .../third_party/glm/detail/func_packing.inl | 0 .../glm/detail/func_packing_simd.inl | 0 .../glm/detail/func_trigonometric.inl | 0 .../glm/detail/func_trigonometric_simd.inl | 0 .../glm/detail/func_vector_relational.inl | 0 .../detail/func_vector_relational_simd.inl | 0 MacroLibX/third_party/glm/detail/glm.cpp | 0 .../third_party/glm/detail/qualifier.hpp | 0 MacroLibX/third_party/glm/detail/setup.hpp | 0 .../third_party/glm/detail/type_float.hpp | 0 .../third_party/glm/detail/type_half.hpp | 0 .../third_party/glm/detail/type_half.inl | 0 .../third_party/glm/detail/type_mat2x2.hpp | 0 .../third_party/glm/detail/type_mat2x2.inl | 0 .../third_party/glm/detail/type_mat2x3.hpp | 0 .../third_party/glm/detail/type_mat2x3.inl | 0 .../third_party/glm/detail/type_mat2x4.hpp | 0 .../third_party/glm/detail/type_mat2x4.inl | 0 .../third_party/glm/detail/type_mat3x2.hpp | 0 .../third_party/glm/detail/type_mat3x2.inl | 0 .../third_party/glm/detail/type_mat3x3.hpp | 0 .../third_party/glm/detail/type_mat3x3.inl | 0 .../third_party/glm/detail/type_mat3x4.hpp | 0 .../third_party/glm/detail/type_mat3x4.inl | 0 .../third_party/glm/detail/type_mat4x2.hpp | 0 .../third_party/glm/detail/type_mat4x2.inl | 0 .../third_party/glm/detail/type_mat4x3.hpp | 0 .../third_party/glm/detail/type_mat4x3.inl | 0 .../third_party/glm/detail/type_mat4x4.hpp | 0 .../third_party/glm/detail/type_mat4x4.inl | 0 .../glm/detail/type_mat4x4_simd.inl | 0 .../third_party/glm/detail/type_quat.hpp | 0 .../third_party/glm/detail/type_quat.inl | 0 .../third_party/glm/detail/type_quat_simd.inl | 0 .../third_party/glm/detail/type_vec1.hpp | 0 .../third_party/glm/detail/type_vec1.inl | 0 .../third_party/glm/detail/type_vec2.hpp | 0 .../third_party/glm/detail/type_vec2.inl | 0 .../third_party/glm/detail/type_vec3.hpp | 0 .../third_party/glm/detail/type_vec3.inl | 0 .../third_party/glm/detail/type_vec4.hpp | 0 .../third_party/glm/detail/type_vec4.inl | 0 .../third_party/glm/detail/type_vec4_simd.inl | 0 MacroLibX/third_party/glm/exponential.hpp | 0 MacroLibX/third_party/glm/ext.hpp | 0 .../third_party/glm/ext/matrix_clip_space.hpp | 0 .../third_party/glm/ext/matrix_clip_space.inl | 0 .../third_party/glm/ext/matrix_common.hpp | 0 .../third_party/glm/ext/matrix_common.inl | 0 .../third_party/glm/ext/matrix_double2x2.hpp | 0 .../glm/ext/matrix_double2x2_precision.hpp | 0 .../third_party/glm/ext/matrix_double2x3.hpp | 0 .../glm/ext/matrix_double2x3_precision.hpp | 0 .../third_party/glm/ext/matrix_double2x4.hpp | 0 .../glm/ext/matrix_double2x4_precision.hpp | 0 .../third_party/glm/ext/matrix_double3x2.hpp | 0 .../glm/ext/matrix_double3x2_precision.hpp | 0 .../third_party/glm/ext/matrix_double3x3.hpp | 0 .../glm/ext/matrix_double3x3_precision.hpp | 0 .../third_party/glm/ext/matrix_double3x4.hpp | 0 .../glm/ext/matrix_double3x4_precision.hpp | 0 .../third_party/glm/ext/matrix_double4x2.hpp | 0 .../glm/ext/matrix_double4x2_precision.hpp | 0 .../third_party/glm/ext/matrix_double4x3.hpp | 0 .../glm/ext/matrix_double4x3_precision.hpp | 0 .../third_party/glm/ext/matrix_double4x4.hpp | 0 .../glm/ext/matrix_double4x4_precision.hpp | 0 .../third_party/glm/ext/matrix_float2x2.hpp | 0 .../glm/ext/matrix_float2x2_precision.hpp | 0 .../third_party/glm/ext/matrix_float2x3.hpp | 0 .../glm/ext/matrix_float2x3_precision.hpp | 0 .../third_party/glm/ext/matrix_float2x4.hpp | 0 .../glm/ext/matrix_float2x4_precision.hpp | 0 .../third_party/glm/ext/matrix_float3x2.hpp | 0 .../glm/ext/matrix_float3x2_precision.hpp | 0 .../third_party/glm/ext/matrix_float3x3.hpp | 0 .../glm/ext/matrix_float3x3_precision.hpp | 0 .../third_party/glm/ext/matrix_float3x4.hpp | 0 .../glm/ext/matrix_float3x4_precision.hpp | 0 .../third_party/glm/ext/matrix_float4x2.hpp | 0 .../glm/ext/matrix_float4x2_precision.hpp | 0 .../third_party/glm/ext/matrix_float4x3.hpp | 0 .../glm/ext/matrix_float4x3_precision.hpp | 0 .../third_party/glm/ext/matrix_float4x4.hpp | 0 .../glm/ext/matrix_float4x4_precision.hpp | 0 .../third_party/glm/ext/matrix_projection.hpp | 0 .../third_party/glm/ext/matrix_projection.inl | 0 .../third_party/glm/ext/matrix_relational.hpp | 0 .../third_party/glm/ext/matrix_relational.inl | 0 .../third_party/glm/ext/matrix_transform.hpp | 0 .../third_party/glm/ext/matrix_transform.inl | 0 .../third_party/glm/ext/quaternion_common.hpp | 0 .../third_party/glm/ext/quaternion_common.inl | 0 .../glm/ext/quaternion_common_simd.inl | 0 .../third_party/glm/ext/quaternion_double.hpp | 0 .../glm/ext/quaternion_double_precision.hpp | 0 .../glm/ext/quaternion_exponential.hpp | 0 .../glm/ext/quaternion_exponential.inl | 0 .../third_party/glm/ext/quaternion_float.hpp | 0 .../glm/ext/quaternion_float_precision.hpp | 0 .../glm/ext/quaternion_geometric.hpp | 0 .../glm/ext/quaternion_geometric.inl | 0 .../glm/ext/quaternion_relational.hpp | 0 .../glm/ext/quaternion_relational.inl | 0 .../glm/ext/quaternion_transform.hpp | 0 .../glm/ext/quaternion_transform.inl | 0 .../glm/ext/quaternion_trigonometric.hpp | 0 .../glm/ext/quaternion_trigonometric.inl | 0 .../third_party/glm/ext/scalar_common.hpp | 0 .../third_party/glm/ext/scalar_common.inl | 0 .../third_party/glm/ext/scalar_constants.hpp | 0 .../third_party/glm/ext/scalar_constants.inl | 0 .../third_party/glm/ext/scalar_int_sized.hpp | 0 .../third_party/glm/ext/scalar_integer.hpp | 0 .../third_party/glm/ext/scalar_integer.inl | 0 .../third_party/glm/ext/scalar_relational.hpp | 0 .../third_party/glm/ext/scalar_relational.inl | 0 .../third_party/glm/ext/scalar_uint_sized.hpp | 0 MacroLibX/third_party/glm/ext/scalar_ulp.hpp | 0 MacroLibX/third_party/glm/ext/scalar_ulp.inl | 0 .../third_party/glm/ext/vector_bool1.hpp | 0 .../glm/ext/vector_bool1_precision.hpp | 0 .../third_party/glm/ext/vector_bool2.hpp | 0 .../glm/ext/vector_bool2_precision.hpp | 0 .../third_party/glm/ext/vector_bool3.hpp | 0 .../glm/ext/vector_bool3_precision.hpp | 0 .../third_party/glm/ext/vector_bool4.hpp | 0 .../glm/ext/vector_bool4_precision.hpp | 0 .../third_party/glm/ext/vector_common.hpp | 0 .../third_party/glm/ext/vector_common.inl | 0 .../third_party/glm/ext/vector_double1.hpp | 0 .../glm/ext/vector_double1_precision.hpp | 0 .../third_party/glm/ext/vector_double2.hpp | 0 .../glm/ext/vector_double2_precision.hpp | 0 .../third_party/glm/ext/vector_double3.hpp | 0 .../glm/ext/vector_double3_precision.hpp | 0 .../third_party/glm/ext/vector_double4.hpp | 0 .../glm/ext/vector_double4_precision.hpp | 0 .../third_party/glm/ext/vector_float1.hpp | 0 .../glm/ext/vector_float1_precision.hpp | 0 .../third_party/glm/ext/vector_float2.hpp | 0 .../glm/ext/vector_float2_precision.hpp | 0 .../third_party/glm/ext/vector_float3.hpp | 0 .../glm/ext/vector_float3_precision.hpp | 0 .../third_party/glm/ext/vector_float4.hpp | 0 .../glm/ext/vector_float4_precision.hpp | 0 MacroLibX/third_party/glm/ext/vector_int1.hpp | 0 .../glm/ext/vector_int1_precision.hpp | 0 MacroLibX/third_party/glm/ext/vector_int2.hpp | 0 .../glm/ext/vector_int2_precision.hpp | 0 MacroLibX/third_party/glm/ext/vector_int3.hpp | 0 .../glm/ext/vector_int3_precision.hpp | 0 MacroLibX/third_party/glm/ext/vector_int4.hpp | 0 .../glm/ext/vector_int4_precision.hpp | 0 .../third_party/glm/ext/vector_integer.hpp | 0 .../third_party/glm/ext/vector_integer.inl | 0 .../third_party/glm/ext/vector_relational.hpp | 0 .../third_party/glm/ext/vector_relational.inl | 0 .../third_party/glm/ext/vector_uint1.hpp | 0 .../glm/ext/vector_uint1_precision.hpp | 0 .../third_party/glm/ext/vector_uint2.hpp | 0 .../glm/ext/vector_uint2_precision.hpp | 0 .../third_party/glm/ext/vector_uint3.hpp | 0 .../glm/ext/vector_uint3_precision.hpp | 0 .../third_party/glm/ext/vector_uint4.hpp | 0 .../glm/ext/vector_uint4_precision.hpp | 0 MacroLibX/third_party/glm/ext/vector_ulp.hpp | 0 MacroLibX/third_party/glm/ext/vector_ulp.inl | 0 MacroLibX/third_party/glm/fwd.hpp | 0 MacroLibX/third_party/glm/geometric.hpp | 0 MacroLibX/third_party/glm/glm.hpp | 0 MacroLibX/third_party/glm/gtc/bitfield.hpp | 0 MacroLibX/third_party/glm/gtc/bitfield.inl | 0 MacroLibX/third_party/glm/gtc/color_space.hpp | 0 MacroLibX/third_party/glm/gtc/color_space.inl | 0 MacroLibX/third_party/glm/gtc/constants.hpp | 0 MacroLibX/third_party/glm/gtc/constants.inl | 0 MacroLibX/third_party/glm/gtc/epsilon.hpp | 0 MacroLibX/third_party/glm/gtc/epsilon.inl | 0 MacroLibX/third_party/glm/gtc/integer.hpp | 0 MacroLibX/third_party/glm/gtc/integer.inl | 0 .../third_party/glm/gtc/matrix_access.hpp | 0 .../third_party/glm/gtc/matrix_access.inl | 0 .../third_party/glm/gtc/matrix_integer.hpp | 0 .../third_party/glm/gtc/matrix_inverse.hpp | 0 .../third_party/glm/gtc/matrix_inverse.inl | 0 .../third_party/glm/gtc/matrix_transform.hpp | 0 .../third_party/glm/gtc/matrix_transform.inl | 0 MacroLibX/third_party/glm/gtc/noise.hpp | 0 MacroLibX/third_party/glm/gtc/noise.inl | 0 MacroLibX/third_party/glm/gtc/packing.hpp | 0 MacroLibX/third_party/glm/gtc/packing.inl | 0 MacroLibX/third_party/glm/gtc/quaternion.hpp | 0 MacroLibX/third_party/glm/gtc/quaternion.inl | 0 .../third_party/glm/gtc/quaternion_simd.inl | 0 MacroLibX/third_party/glm/gtc/random.hpp | 0 MacroLibX/third_party/glm/gtc/random.inl | 0 MacroLibX/third_party/glm/gtc/reciprocal.hpp | 0 MacroLibX/third_party/glm/gtc/reciprocal.inl | 0 MacroLibX/third_party/glm/gtc/round.hpp | 0 MacroLibX/third_party/glm/gtc/round.inl | 0 .../third_party/glm/gtc/type_aligned.hpp | 0 .../third_party/glm/gtc/type_precision.hpp | 0 .../third_party/glm/gtc/type_precision.inl | 0 MacroLibX/third_party/glm/gtc/type_ptr.hpp | 0 MacroLibX/third_party/glm/gtc/type_ptr.inl | 0 MacroLibX/third_party/glm/gtc/ulp.hpp | 0 MacroLibX/third_party/glm/gtc/ulp.inl | 0 MacroLibX/third_party/glm/gtc/vec1.hpp | 0 .../glm/gtx/associated_min_max.hpp | 0 .../glm/gtx/associated_min_max.inl | 0 MacroLibX/third_party/glm/gtx/bit.hpp | 0 MacroLibX/third_party/glm/gtx/bit.inl | 0 .../third_party/glm/gtx/closest_point.hpp | 0 .../third_party/glm/gtx/closest_point.inl | 0 .../third_party/glm/gtx/color_encoding.hpp | 0 .../third_party/glm/gtx/color_encoding.inl | 0 MacroLibX/third_party/glm/gtx/color_space.hpp | 0 MacroLibX/third_party/glm/gtx/color_space.inl | 0 .../third_party/glm/gtx/color_space_YCoCg.hpp | 0 .../third_party/glm/gtx/color_space_YCoCg.inl | 0 MacroLibX/third_party/glm/gtx/common.hpp | 0 MacroLibX/third_party/glm/gtx/common.inl | 0 .../third_party/glm/gtx/compatibility.hpp | 0 .../third_party/glm/gtx/compatibility.inl | 0 .../third_party/glm/gtx/component_wise.hpp | 0 .../third_party/glm/gtx/component_wise.inl | 0 .../third_party/glm/gtx/dual_quaternion.hpp | 0 .../third_party/glm/gtx/dual_quaternion.inl | 0 MacroLibX/third_party/glm/gtx/easing.hpp | 0 MacroLibX/third_party/glm/gtx/easing.inl | 0 .../third_party/glm/gtx/euler_angles.hpp | 0 .../third_party/glm/gtx/euler_angles.inl | 0 MacroLibX/third_party/glm/gtx/extend.hpp | 0 MacroLibX/third_party/glm/gtx/extend.inl | 0 .../third_party/glm/gtx/extended_min_max.hpp | 0 .../third_party/glm/gtx/extended_min_max.inl | 0 .../third_party/glm/gtx/exterior_product.hpp | 0 .../third_party/glm/gtx/exterior_product.inl | 0 .../third_party/glm/gtx/fast_exponential.hpp | 0 .../third_party/glm/gtx/fast_exponential.inl | 0 .../third_party/glm/gtx/fast_square_root.hpp | 0 .../third_party/glm/gtx/fast_square_root.inl | 0 .../third_party/glm/gtx/fast_trigonometry.hpp | 0 .../third_party/glm/gtx/fast_trigonometry.inl | 0 .../third_party/glm/gtx/float_notmalize.inl | 0 MacroLibX/third_party/glm/gtx/functions.hpp | 0 MacroLibX/third_party/glm/gtx/functions.inl | 0 .../third_party/glm/gtx/gradient_paint.hpp | 0 .../third_party/glm/gtx/gradient_paint.inl | 0 .../glm/gtx/handed_coordinate_space.hpp | 0 .../glm/gtx/handed_coordinate_space.inl | 0 MacroLibX/third_party/glm/gtx/hash.hpp | 0 MacroLibX/third_party/glm/gtx/hash.inl | 0 MacroLibX/third_party/glm/gtx/integer.hpp | 0 MacroLibX/third_party/glm/gtx/integer.inl | 0 MacroLibX/third_party/glm/gtx/intersect.hpp | 0 MacroLibX/third_party/glm/gtx/intersect.inl | 0 MacroLibX/third_party/glm/gtx/io.hpp | 0 MacroLibX/third_party/glm/gtx/io.inl | 0 MacroLibX/third_party/glm/gtx/log_base.hpp | 0 MacroLibX/third_party/glm/gtx/log_base.inl | 0 .../glm/gtx/matrix_cross_product.hpp | 0 .../glm/gtx/matrix_cross_product.inl | 0 .../third_party/glm/gtx/matrix_decompose.hpp | 0 .../third_party/glm/gtx/matrix_decompose.inl | 0 .../glm/gtx/matrix_factorisation.hpp | 0 .../glm/gtx/matrix_factorisation.inl | 0 .../glm/gtx/matrix_interpolation.hpp | 0 .../glm/gtx/matrix_interpolation.inl | 0 .../glm/gtx/matrix_major_storage.hpp | 0 .../glm/gtx/matrix_major_storage.inl | 0 .../third_party/glm/gtx/matrix_operation.hpp | 0 .../third_party/glm/gtx/matrix_operation.inl | 0 .../third_party/glm/gtx/matrix_query.hpp | 0 .../third_party/glm/gtx/matrix_query.inl | 0 .../glm/gtx/matrix_transform_2d.hpp | 0 .../glm/gtx/matrix_transform_2d.inl | 0 .../third_party/glm/gtx/mixed_product.hpp | 0 .../third_party/glm/gtx/mixed_product.inl | 0 MacroLibX/third_party/glm/gtx/norm.hpp | 0 MacroLibX/third_party/glm/gtx/norm.inl | 0 MacroLibX/third_party/glm/gtx/normal.hpp | 0 MacroLibX/third_party/glm/gtx/normal.inl | 0 .../third_party/glm/gtx/normalize_dot.hpp | 0 .../third_party/glm/gtx/normalize_dot.inl | 0 .../third_party/glm/gtx/number_precision.hpp | 0 .../third_party/glm/gtx/number_precision.inl | 0 MacroLibX/third_party/glm/gtx/optimum_pow.hpp | 0 MacroLibX/third_party/glm/gtx/optimum_pow.inl | 0 .../third_party/glm/gtx/orthonormalize.hpp | 0 .../third_party/glm/gtx/orthonormalize.inl | 0 .../third_party/glm/gtx/perpendicular.hpp | 0 .../third_party/glm/gtx/perpendicular.inl | 0 .../third_party/glm/gtx/polar_coordinates.hpp | 0 .../third_party/glm/gtx/polar_coordinates.inl | 0 MacroLibX/third_party/glm/gtx/projection.hpp | 0 MacroLibX/third_party/glm/gtx/projection.inl | 0 MacroLibX/third_party/glm/gtx/quaternion.hpp | 0 MacroLibX/third_party/glm/gtx/quaternion.inl | 0 MacroLibX/third_party/glm/gtx/range.hpp | 0 MacroLibX/third_party/glm/gtx/raw_data.hpp | 0 MacroLibX/third_party/glm/gtx/raw_data.inl | 0 .../glm/gtx/rotate_normalized_axis.hpp | 0 .../glm/gtx/rotate_normalized_axis.inl | 0 .../third_party/glm/gtx/rotate_vector.hpp | 0 .../third_party/glm/gtx/rotate_vector.inl | 0 .../glm/gtx/scalar_multiplication.hpp | 0 .../third_party/glm/gtx/scalar_relational.hpp | 0 .../third_party/glm/gtx/scalar_relational.inl | 0 MacroLibX/third_party/glm/gtx/spline.hpp | 0 MacroLibX/third_party/glm/gtx/spline.inl | 0 .../third_party/glm/gtx/std_based_type.hpp | 0 .../third_party/glm/gtx/std_based_type.inl | 0 MacroLibX/third_party/glm/gtx/string_cast.hpp | 0 MacroLibX/third_party/glm/gtx/string_cast.inl | 0 MacroLibX/third_party/glm/gtx/texture.hpp | 0 MacroLibX/third_party/glm/gtx/texture.inl | 0 MacroLibX/third_party/glm/gtx/transform.hpp | 0 MacroLibX/third_party/glm/gtx/transform.inl | 0 MacroLibX/third_party/glm/gtx/transform2.hpp | 0 MacroLibX/third_party/glm/gtx/transform2.inl | 0 .../third_party/glm/gtx/type_aligned.hpp | 0 .../third_party/glm/gtx/type_aligned.inl | 0 MacroLibX/third_party/glm/gtx/type_trait.hpp | 0 MacroLibX/third_party/glm/gtx/type_trait.inl | 0 MacroLibX/third_party/glm/gtx/vec_swizzle.hpp | 0 .../third_party/glm/gtx/vector_angle.hpp | 0 .../third_party/glm/gtx/vector_angle.inl | 0 .../third_party/glm/gtx/vector_query.hpp | 0 .../third_party/glm/gtx/vector_query.inl | 0 MacroLibX/third_party/glm/gtx/wrap.hpp | 0 MacroLibX/third_party/glm/gtx/wrap.inl | 0 MacroLibX/third_party/glm/integer.hpp | 0 MacroLibX/third_party/glm/mat2x2.hpp | 0 MacroLibX/third_party/glm/mat2x3.hpp | 0 MacroLibX/third_party/glm/mat2x4.hpp | 0 MacroLibX/third_party/glm/mat3x2.hpp | 0 MacroLibX/third_party/glm/mat3x3.hpp | 0 MacroLibX/third_party/glm/mat3x4.hpp | 0 MacroLibX/third_party/glm/mat4x2.hpp | 0 MacroLibX/third_party/glm/mat4x3.hpp | 0 MacroLibX/third_party/glm/mat4x4.hpp | 0 MacroLibX/third_party/glm/matrix.hpp | 0 MacroLibX/third_party/glm/packing.hpp | 0 MacroLibX/third_party/glm/simd/common.h | 0 MacroLibX/third_party/glm/simd/exponential.h | 0 MacroLibX/third_party/glm/simd/geometric.h | 0 MacroLibX/third_party/glm/simd/integer.h | 0 MacroLibX/third_party/glm/simd/matrix.h | 0 MacroLibX/third_party/glm/simd/neon.h | 0 MacroLibX/third_party/glm/simd/packing.h | 0 MacroLibX/third_party/glm/simd/platform.h | 0 .../third_party/glm/simd/trigonometric.h | 0 .../third_party/glm/simd/vector_relational.h | 0 MacroLibX/third_party/glm/trigonometric.hpp | 0 MacroLibX/third_party/glm/vec2.hpp | 0 MacroLibX/third_party/glm/vec3.hpp | 0 MacroLibX/third_party/glm/vec4.hpp | 0 .../third_party/glm/vector_relational.hpp | 0 MacroLibX/valgrind.supp | 74 ++++---- Makefile | 5 +- ft_check_map_error.c | 85 +++++++++ ft_check_map_error.o | Bin 0 -> 4976 bytes ft_lstclear_img.c | 35 ++++ ft_lstclear_img.o | Bin 0 -> 3280 bytes ft_move_character.c | 53 ++++-- ft_move_character.o | Bin 0 -> 12168 bytes get_map.c | 23 ++- get_map.o | Bin 0 -> 4304 bytes get_next_line/get_next_line.a | Bin 0 -> 4970 bytes get_next_line/get_next_line.o | Bin 0 -> 2536 bytes get_next_line/get_next_line_utils.o | Bin 0 -> 2056 bytes libft/ft_atoi.o | Bin 0 -> 1272 bytes libft/ft_bzero.o | Bin 0 -> 1128 bytes libft/ft_calloc.o | Bin 0 -> 1368 bytes libft/ft_isalnum.o | Bin 0 -> 1056 bytes libft/ft_isalpha.o | Bin 0 -> 1032 bytes libft/ft_isascii.o | Bin 0 -> 1016 bytes libft/ft_isdigit.o | Bin 0 -> 1016 bytes libft/ft_isprint.o | Bin 0 -> 1016 bytes libft/ft_itoa.o | Bin 0 -> 1824 bytes libft/ft_lstadd_back.o | Bin 0 -> 1192 bytes libft/ft_lstadd_front.o | Bin 0 -> 1040 bytes libft/ft_lstclear.o | Bin 0 -> 1240 bytes libft/ft_lstdelone.o | Bin 0 -> 1160 bytes libft/ft_lstiter.o | Bin 0 -> 1056 bytes libft/ft_lstlast.o | Bin 0 -> 1048 bytes libft/ft_lstmap.o | Bin 0 -> 1408 bytes libft/ft_lstnew.o | Bin 0 -> 1176 bytes libft/ft_lstsize.o | Bin 0 -> 1016 bytes libft/ft_memchr.o | Bin 0 -> 1072 bytes libft/ft_memcmp.o | Bin 0 -> 1136 bytes libft/ft_memcpy.o | Bin 0 -> 1096 bytes libft/ft_memmove.o | Bin 0 -> 1144 bytes libft/ft_memset.o | Bin 0 -> 1040 bytes libft/ft_putchar_fd.o | Bin 0 -> 1128 bytes libft/ft_putendl_fd.o | Bin 0 -> 1208 bytes libft/ft_putnbr_fd.o | Bin 0 -> 1464 bytes libft/ft_putstr_fd.c | 13 +- libft/ft_putstr_fd.o | Bin 0 -> 1208 bytes libft/ft_split.o | Bin 0 -> 2464 bytes libft/ft_strchr.o | Bin 0 -> 1240 bytes libft/ft_strdup.o | Bin 0 -> 1312 bytes libft/ft_striteri.o | Bin 0 -> 1072 bytes libft/ft_strjoin.o | Bin 0 -> 1472 bytes libft/ft_strlcat.o | Bin 0 -> 1424 bytes libft/ft_strlcpy.o | Bin 0 -> 1328 bytes libft/ft_strlen.c | 15 +- libft/ft_strlen.o | Bin 0 -> 1024 bytes libft/ft_strmapi.o | Bin 0 -> 1360 bytes libft/ft_strncmp.o | Bin 0 -> 1168 bytes libft/ft_strnstr.o | Bin 0 -> 1344 bytes libft/ft_strrchr.o | Bin 0 -> 1280 bytes libft/ft_strtrim.o | Bin 0 -> 1480 bytes libft/ft_substr.o | Bin 0 -> 1600 bytes libft/ft_tolower.o | Bin 0 -> 1016 bytes libft/ft_toupper.o | Bin 0 -> 1016 bytes libft/libft.a | Bin 0 -> 56580 bytes libft/libft.h | 2 +- main.c | 96 ++++++++-- main.o | Bin 0 -> 8424 bytes print_map.c | 34 ++-- print_map.o | Bin 0 -> 6208 bytes printf/ft_printf.o | Bin 0 -> 3968 bytes printf/ft_putchar.o | Bin 0 -> 1136 bytes printf/ft_putnbr.o | Bin 0 -> 1512 bytes printf/ft_putnbrbase.o | Bin 0 -> 1760 bytes printf/ft_putstr.o | Bin 0 -> 1384 bytes printf/ft_strlen.o | Bin 0 -> 1016 bytes printf/libftprintf.a | Bin 0 -> 11374 bytes so_long | Bin 0 -> 36064 bytes so_long.h | 13 +- 492 files changed, 928 insertions(+), 344 deletions(-) create mode 100644 MacroLibX/example/42_logo.bmp create mode 100644 MacroLibX/example/42_logo.jpg mode change 100644 => 100755 MacroLibX/scripts/fetch_dependencies.sh create mode 100644 MacroLibX/src/core/fps.cpp create mode 100644 MacroLibX/src/core/fps.h create mode 100644 MacroLibX/src/renderer/texts/font_library.cpp create mode 100644 MacroLibX/src/renderer/texts/font_library.h mode change 100644 => 100755 MacroLibX/third_party/glm/common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_features.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_fixes.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_noise.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_swizzle.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_swizzle_func.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/_vectorize.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/compute_common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/compute_vector_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_common_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_exponential.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_exponential_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_geometric.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_geometric_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_integer.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_integer_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_matrix.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_matrix_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_packing.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_packing_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_trigonometric.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_trigonometric_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_vector_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/func_vector_relational_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/glm.cpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/qualifier.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/setup.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_float.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_half.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_half.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x2.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x3.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat2x4.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x2.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x3.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat3x4.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x2.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x3.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x4.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_mat4x4_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_quat.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_quat.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_quat_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec1.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec2.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec3.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec4.inl mode change 100644 => 100755 MacroLibX/third_party/glm/detail/type_vec4_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/exponential.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_clip_space.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_clip_space.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double2x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double3x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_double4x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float2x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float3x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_float4x4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_projection.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_projection.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_transform.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/matrix_transform.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_common_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_double.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_double_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_exponential.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_exponential.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_float.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_float_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_geometric.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_geometric.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_transform.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_transform.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_trigonometric.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/quaternion_trigonometric.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_constants.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_constants.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_int_sized.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_integer.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_uint_sized.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_ulp.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/scalar_ulp.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool1_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_bool4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double1_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_double4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float1_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_float4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int1_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_int4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_integer.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint1_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint2_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint3_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_uint4_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_ulp.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/ext/vector_ulp.inl mode change 100644 => 100755 MacroLibX/third_party/glm/fwd.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/geometric.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/glm.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/bitfield.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/bitfield.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/color_space.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/color_space.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/constants.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/constants.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/epsilon.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/epsilon.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/integer.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_access.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_access.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_inverse.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_inverse.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_transform.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/matrix_transform.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/noise.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/noise.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/packing.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/packing.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/quaternion.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/quaternion.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/quaternion_simd.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/random.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/random.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/reciprocal.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/reciprocal.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/round.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/round.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/type_aligned.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/type_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/type_precision.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/type_ptr.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/type_ptr.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/ulp.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/ulp.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtc/vec1.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/associated_min_max.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/associated_min_max.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/bit.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/bit.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/closest_point.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/closest_point.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_encoding.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_encoding.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_space.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_space.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_space_YCoCg.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/color_space_YCoCg.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/common.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/common.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/compatibility.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/compatibility.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/component_wise.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/component_wise.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/dual_quaternion.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/dual_quaternion.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/easing.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/easing.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/euler_angles.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/euler_angles.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/extend.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/extend.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/extended_min_max.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/extended_min_max.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/exterior_product.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/exterior_product.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_exponential.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_exponential.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_square_root.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_square_root.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_trigonometry.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/fast_trigonometry.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/float_notmalize.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/functions.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/functions.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/gradient_paint.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/gradient_paint.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/handed_coordinate_space.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/handed_coordinate_space.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/hash.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/hash.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/integer.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/intersect.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/intersect.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/io.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/io.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/log_base.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/log_base.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_cross_product.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_cross_product.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_decompose.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_decompose.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_factorisation.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_factorisation.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_interpolation.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_interpolation.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_major_storage.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_major_storage.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_operation.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_operation.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_query.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_query.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_transform_2d.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/matrix_transform_2d.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/mixed_product.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/mixed_product.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/norm.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/norm.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/normal.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/normal.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/normalize_dot.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/normalize_dot.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/number_precision.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/number_precision.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/optimum_pow.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/optimum_pow.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/orthonormalize.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/orthonormalize.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/perpendicular.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/perpendicular.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/polar_coordinates.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/polar_coordinates.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/projection.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/projection.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/quaternion.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/quaternion.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/range.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/raw_data.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/raw_data.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/rotate_normalized_axis.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/rotate_normalized_axis.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/rotate_vector.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/rotate_vector.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/scalar_multiplication.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/scalar_relational.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/scalar_relational.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/spline.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/spline.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/std_based_type.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/std_based_type.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/string_cast.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/string_cast.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/texture.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/texture.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/transform.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/transform.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/transform2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/transform2.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/type_aligned.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/type_aligned.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/type_trait.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/type_trait.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/vec_swizzle.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/vector_angle.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/vector_angle.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/vector_query.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/vector_query.inl mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/wrap.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/gtx/wrap.inl mode change 100644 => 100755 MacroLibX/third_party/glm/integer.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat2x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat2x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat2x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat3x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat3x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat3x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat4x2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat4x3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/mat4x4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/matrix.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/packing.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/simd/common.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/exponential.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/geometric.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/integer.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/matrix.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/neon.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/packing.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/platform.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/trigonometric.h mode change 100644 => 100755 MacroLibX/third_party/glm/simd/vector_relational.h mode change 100644 => 100755 MacroLibX/third_party/glm/trigonometric.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/vec2.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/vec3.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/vec4.hpp mode change 100644 => 100755 MacroLibX/third_party/glm/vector_relational.hpp create mode 100644 ft_check_map_error.c create mode 100644 ft_check_map_error.o create mode 100644 ft_lstclear_img.c create mode 100644 ft_lstclear_img.o create mode 100644 ft_move_character.o create mode 100644 get_map.o create mode 100644 get_next_line/get_next_line.a create mode 100644 get_next_line/get_next_line.o create mode 100644 get_next_line/get_next_line_utils.o create mode 100644 libft/ft_atoi.o create mode 100644 libft/ft_bzero.o create mode 100644 libft/ft_calloc.o create mode 100644 libft/ft_isalnum.o create mode 100644 libft/ft_isalpha.o create mode 100644 libft/ft_isascii.o create mode 100644 libft/ft_isdigit.o create mode 100644 libft/ft_isprint.o create mode 100644 libft/ft_itoa.o create mode 100644 libft/ft_lstadd_back.o create mode 100644 libft/ft_lstadd_front.o create mode 100644 libft/ft_lstclear.o create mode 100644 libft/ft_lstdelone.o create mode 100644 libft/ft_lstiter.o create mode 100644 libft/ft_lstlast.o create mode 100644 libft/ft_lstmap.o create mode 100644 libft/ft_lstnew.o create mode 100644 libft/ft_lstsize.o create mode 100644 libft/ft_memchr.o create mode 100644 libft/ft_memcmp.o create mode 100644 libft/ft_memcpy.o create mode 100644 libft/ft_memmove.o create mode 100644 libft/ft_memset.o create mode 100644 libft/ft_putchar_fd.o create mode 100644 libft/ft_putendl_fd.o create mode 100644 libft/ft_putnbr_fd.o create mode 100644 libft/ft_putstr_fd.o create mode 100644 libft/ft_split.o create mode 100644 libft/ft_strchr.o create mode 100644 libft/ft_strdup.o create mode 100644 libft/ft_striteri.o create mode 100644 libft/ft_strjoin.o create mode 100644 libft/ft_strlcat.o create mode 100644 libft/ft_strlcpy.o create mode 100644 libft/ft_strlen.o create mode 100644 libft/ft_strmapi.o create mode 100644 libft/ft_strncmp.o create mode 100644 libft/ft_strnstr.o create mode 100644 libft/ft_strrchr.o create mode 100644 libft/ft_strtrim.o create mode 100644 libft/ft_substr.o create mode 100644 libft/ft_tolower.o create mode 100644 libft/ft_toupper.o create mode 100644 libft/libft.a create mode 100644 main.o create mode 100644 print_map.o create mode 100644 printf/ft_printf.o create mode 100644 printf/ft_putchar.o create mode 100644 printf/ft_putnbr.o create mode 100644 printf/ft_putnbrbase.o create mode 100644 printf/ft_putstr.o create mode 100644 printf/ft_strlen.o create mode 100644 printf/libftprintf.a create mode 100755 so_long diff --git a/MacroLibX/example/42_logo.bmp b/MacroLibX/example/42_logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..299dacccce2f5beee18fdbccfeb97fa783553c30 GIT binary patch literal 30810 zcmeI5X-pMY6oBtTDs6$d6qUF%s1#9)T9?Me)F4Gk4I11cMT~`~AcoC{#F|u1w2j*j znpD%O(c)U8xUbQ;#AxEa#3&l;zD2FOxGVkMo8~fM;1vkA@4=b)hBIf*y>rjUz2}~p zx$>g=C48@3+f4R9@EQ5f$EJc^`cAn@ed2F?Tng8&SSjP5^QbtwcT~T;y+z>zwtd>@ z)1U6zx^(ICNlHpe7@xXx=g$4;tB(uogeT^8E-9~+F9!wGo$q64i)9l6LO=)z0U;m+ zgn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@Lcn_nOq(|C z#*G`^(_VKiy>{)IaoP|rU%q_e#0fM-MMeAe?R)a%3G)5>_usyKi*V}Hsq^R0Biy`s z^Y-oAC=m`GJoxV2JCtnKuU|K0YUAww{rl~9`_-#g!G#$b1Y?ge7rJxj&Z9?hXXj1CQWMBuHDd~Ll-Pq zfB`510|U9l*s)_9HEINkZr!@AUAuO~h!M%j$@AyWuUD_$l`B`0l9HA#T}m4oG-z<_ z*s*2HmU$2+S5x3{*W*sFUcKl8 z1}i#AP*Bi}88aqNo;+sEnDq4YhYue{L`2M*H479mF){Qdpuvj$*|TTkC&YR z9XjOa=TmC>^y!*a_wL=P0ajdk-n@BS$OBmg1O(8vph4RXA3jWXLI5D6>CmA=M~@!m z5Eov&c(G&04m7%7-Me@1^y$-^Hf=IH)v{$vs-i4r1qB5RTZR>tJbn6Lwr#s&#fpUs7xwJglLgac0%QdQ91sNu2Q#U)YSoIcykyCercIlsrlvM& z(gZRX5X{*FkUfKr_|MEZWy+L}9Xpb5Ftw2b5W~~b(h?IBnFPI*r9?(^1~sC1QDCqj=#f(4I>9biQJ}58;Tn;(U=5)CFv_yuH3b27lbEH zoY=K%SJDP%w?&H<)c{twFl5LOqU+0-FG-^6)~$Qt!i50?1~3`<`ufsCn8=vC$R#*S zXQSJYpu&dR-~cHZ`kKKC-+_ZKB+?{22qZtu z<3OWpk>|X6^@@2jH#fI_{rY4+7=RaUd-v{LzI=H?LIN{BIY4Y|Z2$iKIor2yU+l>c z#*ZJ*NaWDabIJoZ!iaU#c>+F?A69R(K}YBd4Gpc{YTtKl{FZ%ueCk*>5}WsZY5nVX z-xsQ``u|5()#bu}R*$f%IBH=ftSU~R;+Fr~uZ%2+M993AsVsGqTk$q{i{-zvii?Z0 zOpSXq! z3UWnQfs6lYtSc8*Zu%9h$R{-}Vdb8cG3t5dK<^S(6=4N2;|Y~F#`ga#UK#z$*z;V= z8(FPdwMvIvEiguSU}E;pjjV5Md0Ate3E`ab(O}nOrszqR4?dck{V6)kbXT_C;@0s>I+19RU!OzdH3cZVmpSlLK zP-AXw7>pY?ZZx}Q$jzEHs{$?_r(3IHFdC~qJhQh{wpFYyu=>bg3ZZH6sXvqv4W*vZ-@c%@$6>~GxTkldQRs3oj$ znb+>t_)PCAa|9WzuwT7;wZ>I@SP`FDGiJrbQbubcq3@ls*MqV4urj(wnQ1DazSLmU ztQfiAVzmavYa1(EW_hQzcdw7t5l~a<*q@uw^?H;jF71qw>^&BS+=fm9m9k5NXeLj6?no`OER+vYqm8$U*ke zNqnWOtpNFR2Mt6%>(nP3@?TCl)g`;W2sX$uc;MIg7KA<|)g&jIWcz4G1~y%>2_2b{ zN&P%4g*()x8M)&n3Fh-}$>oKPt6lUx_aHSEaU2 zQ!4mec9J8>b!q2+RrEf>PsH_kcFt0jd>4Te?hQKjb2Qz|T# Sx)aOs`$Gz7Zfvk5CDKy z4j@?uG_1oy&P4b}M*34UePcDLXZ!>7BmDio4JAS#5rBRN3?>DGA>b=O$V#t5R#8?? zcI7If&`5bC8l|qhVS}kXU=#>~ z0!iut)zu7At69DS4v~T(q@iF*AAnd}3=FO=5h>#Mp4?i?O^o)Z{@rrQG{ftJH>oL3ybnesahBGeSJhD^34b)Ax0|*M#9KX6PS$zRtgzfRSsQl{fAu zG{}!MVv!#W$G1cv z3t%~;fh^7ocPc`gI+zA~ag4$bCvaQbo~EYTBEcS~&)sLd+9liaF_k+a_Az{S)@L?7 z-{}rpA$ZgTO-jkJur_dO`MIL-{9YO?N-I6!s(4 zTgxTD(SS!Ie1g=<7XVa+gug0~1Bt zr&owmUA!Q=3+Qqt6d@l-m-k^-o8H4rD#J!9s5YXQz069&!+Eu)&;9CfpPILF&lI9U zG7K6{KJ62C40Ojw8M7N@Raz$0j-Q!Cp#RZSIpXZ2rseM>}l zo+xK5K;JCH#ub+dI%H2sJUci0NgViM8jGRp+sP=O*3HPhV4ummPOeYa(#_g=&RhQe zCgOM>yg)b_W&S7TvQ4tn+Y`;V=Px_u>rfHZ?IL4>JM5!x?dJLfsKc#>$Y@u!Oz&Va zWnHMOt{ zM*BreVf&;`!nD}AvWfQb?SVS9iD5)oOk>g5sXVx*w5xEwkHVN%*vU#T@TwXfCkLeq zXx@T%A=kq>TK7t+?9J`9^%S`;+{A0L8I&aGvS_HiV!}~cZZTKwBCbz+lN561rbzKX zYc;4cuS4VWB95J=5=@HZwz$Wh7x6~QN%-azZht|FQ!uk}lCEt(n=RJn3(W(L==&MJ z*i9CKGd;?5q!w!-N-8^u(>I_E>K$_nmX2xG?1;kdlkg8sUlb~g$E?yVS?K~;yj}~% z%&gOT++590DO9(%w`c6b*t#_Sd6nB!@zHh*;3C?(X|EkooKpf03I|%7K4^4FfYmlb{kL3Kd&+sO^gt^;WcL#SWR1}K EFK82>82|tP literal 0 HcmV?d00001 diff --git a/MacroLibX/example/build.sh b/MacroLibX/example/build.sh index 4405e9d..b332c18 100755 --- a/MacroLibX/example/build.sh +++ b/MacroLibX/example/build.sh @@ -7,6 +7,6 @@ fi if [ $(uname -s) = 'Darwin' ]; then clang main.c ../libmlx.dylib -L /opt/homebrew/lib -lSDL2 -g; else - clang main.c ../libmlx.so -lSDL2 -g; + clang main.c ../libmlx.so -lSDL2 -g -Wall -Wextra -Werror; fi diff --git a/MacroLibX/example/main.c b/MacroLibX/example/main.c index de17d3c..57d9c94 100644 --- a/MacroLibX/example/main.c +++ b/MacroLibX/example/main.c @@ -6,118 +6,162 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */ -/* Updated: 2024/01/11 15:03:14 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 15:23:35 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include -#include #include "../includes/mlx.h" -typedef struct s_mlx +typedef struct { - void *mlx; - void *win; - void *logo; - void *img; -} t_mlx; + void* mlx; + void* win; + void* logo_png; + void* logo_jpg; + void* logo_bmp; + void* img; +} mlx_t; -int update(void *param) +int update(void* param) { - static int i = 0; - int j; - int k; - t_mlx *mlx; + static int i = 0; + mlx_t* mlx = (mlx_t*)param; - mlx = (t_mlx *)param; + mlx_set_font_scale(mlx->mlx, mlx->win, "default", 6.f); mlx_string_put(mlx->mlx, mlx->win, 160, 120, 0xFFFF2066, "this text should be hidden"); - mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo, 100, 100); + + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_png, 100, 100); + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150); + mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_bmp, 220, 40); mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->img, 150, 60); - if (i == 0) - mlx_set_font_scale(mlx->mlx, mlx->win, "font.ttf", 16.f); + mlx_string_put(mlx->mlx, mlx->win, 20, 50, 0xFFFFFFFF, "that's a text"); - j = 0; - k = 0; - while (j++ < 400) + + int color = 0; + for(int j = 0; j < 400; j++) { - mlx_pixel_put(mlx->mlx, mlx->win, j, j, 0xFFFF0000 + k); + mlx_pixel_put(mlx->mlx, mlx->win, j, j, 0xFFFF0000 + color); mlx_pixel_put(mlx->mlx, mlx->win, 399 - j, j, 0xFF0000FF); - k += (k < 255); + color += (color < 255); } - if (++i == 5000) + + if(++i == 5000) mlx_clear_window(mlx->mlx, mlx->win); - if (i == 7000) + if(i == 7000) mlx_set_font_scale(mlx->mlx, mlx->win, "default", 16.f); - return (0); + + return 0; } -void *create_image(t_mlx *mlx) +void* create_image(mlx_t* mlx) { - unsigned char pixel[4]; - int i[3]; - void *img; - - memset(i, 0, sizeof(int) * 3); - img = mlx_new_image(mlx->mlx, 100, 100); - while (i[0] < (100 * 100) * 4) + unsigned char pixel[4]; + void* img = mlx_new_image(mlx->mlx, 100, 100); + for(int i = 0, j = 0, k = 0; i < (100 * 100) * 4; i += 4, j++) { - if (i[0] < 10000 || i[0] > 20000) + if(j >= 100) { - pixel[0] = i[0]; - pixel[1] = i[1]; - pixel[2] = i[2]; - pixel[3] = 0x99; - mlx_set_image_pixel(mlx->mlx, img, i[1], i[2], *((int *)pixel)); + j = 0; + k++; } - i[0] += 4; - i[1]++; - if (i[1] >= 100) + if(i < 10000 || i > 20000) { - i[1] = 0; - i[2]++; + pixel[0] = i; + pixel[1] = j; + pixel[2] = k; + pixel[3] = 0x99; + mlx_set_image_pixel(mlx->mlx, img, j, k, *((int *)pixel)); } } - return (img); + return img; } -int key_hook(int key, void *param) +int key_hook(int key, void* param) { - if (key == 41) - mlx_loop_end(((t_mlx *)param)->mlx); - return (0); + int x; + int y; + mlx_t* mlx = (mlx_t*)param; + + mlx_mouse_get_pos(mlx->mlx, &x, &y); + switch(key) + { + case 41 : // ESCAPE + mlx_loop_end(mlx->mlx); + break; + case 22 : // (S)how + mlx_mouse_show(); + break; + case 11 : // (H)ide + mlx_mouse_hide(); + break; + case 6 : // (C)lear + mlx_clear_window(mlx->mlx, mlx->win); + break; + case 79 : // RIGHT KEY + mlx_mouse_move(mlx->mlx, mlx->win, x + 10, y); + break; + case 80 : // LEFT KEY + mlx_mouse_move(mlx->mlx, mlx->win, x - 10, y); + break; + case 81 : // UP KEY + mlx_mouse_move(mlx->mlx, mlx->win, x, y + 10); + break; + case 82 : // DOWN KEY + mlx_mouse_move(mlx->mlx, mlx->win, x, y - 10); + break; + + default : break; + } + return 0; } -int window_hook(int event, void *param) +int window_hook(int event, void* param) { - if (event == 0) - mlx_loop_end(((t_mlx *)param)->mlx); - return (0); + if(event == 0) + mlx_loop_end(((mlx_t*)param)->mlx); + return 0; } -int main(int argc, char **argv) +int main(void) { - t_mlx mlx; - void *img; - int w; - int h; + mlx_t mlx; + int w; + int h; + int dummy; - (void)argc; - (void)argv; mlx.mlx = mlx_init(); mlx.win = mlx_new_window(mlx.mlx, 400, 400, "My window"); + + mlx_set_fps_goal(mlx.mlx, 60); + mlx_on_event(mlx.mlx, mlx.win, MLX_KEYDOWN, key_hook, &mlx); mlx_on_event(mlx.mlx, mlx.win, MLX_WINDOW_EVENT, window_hook, &mlx); - mlx.logo = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &w, &h); + + mlx.logo_png = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &dummy, &dummy); + mlx.logo_bmp = mlx_bmp_file_to_image(mlx.mlx, "42_logo.bmp", &dummy, &dummy); + mlx.logo_jpg = mlx_jpg_file_to_image(mlx.mlx, "42_logo.jpg", &dummy, &dummy); + mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, 0xFFFF00FF); - mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo, 10, 190); + mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo_png, 10, 190); + mlx.img = create_image(&mlx); - mlx_string_put(mlx.mlx, mlx.win, 20, 20, 0xFF0020FF, \ - "that text will disappear"); + + mlx_set_font_scale(mlx.mlx, mlx.win, "font.ttf", 16.f); + mlx_string_put(mlx.mlx, mlx.win, 20, 20, 0xFF0020FF, "that text will disappear"); + mlx_loop_hook(mlx.mlx, update, &mlx); mlx_loop(mlx.mlx); - mlx_destroy_image(mlx.mlx, mlx.logo); + + mlx_get_screens_size(mlx.mlx, mlx.win, &w, &h); + printf("screen size : %dx%d\n", w, h); + + mlx_destroy_image(mlx.mlx, mlx.logo_png); + mlx_destroy_image(mlx.mlx, mlx.logo_jpg); + mlx_destroy_image(mlx.mlx, mlx.logo_bmp); mlx_destroy_image(mlx.mlx, mlx.img); mlx_destroy_window(mlx.mlx, mlx.win); mlx_destroy_display(mlx.mlx); - return (0); + + return 0; } diff --git a/MacroLibX/includes/mlx.h b/MacroLibX/includes/mlx.h index 6c5c733..14e4a0e 100644 --- a/MacroLibX/includes/mlx.h +++ b/MacroLibX/includes/mlx.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */ -/* Updated: 2024/01/05 19:53:13 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 14:36:12 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -349,15 +349,27 @@ MLX_API int mlx_destroy_display(void* mlx); /** - * @brief Get screen size + * @brief Get the size of the screen the given window is on * * @param mlx Internal MLX application + * @param win Internal window * @param w Get width size * @param h Get height size * * @return (int) Always return 0, made this to copy the behaviour of the original MLX */ -MLX_API int mlx_get_screens_size(void* mlx, int* w, int* h); +MLX_API int mlx_get_screens_size(void* mlx, void* win, int* w, int* h); + + +/** + * @brief Caps the FPS + * + * @param mlx Internal MLX application + * @param fps The FPS cap + * + * @return (int) Always return 0 + */ +MLX_API int mlx_set_fps_goal(void* mlx, int fps); #ifdef __cplusplus } diff --git a/MacroLibX/scripts/fetch_dependencies.sh b/MacroLibX/scripts/fetch_dependencies.sh old mode 100644 new mode 100755 diff --git a/MacroLibX/src/core/application.cpp b/MacroLibX/src/core/application.cpp index 514df83..b8a02f7 100644 --- a/MacroLibX/src/core/application.cpp +++ b/MacroLibX/src/core/application.cpp @@ -6,12 +6,13 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 22:10:52 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:08:42 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 15:19:58 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include "application.h" #include +#include #include #include #include @@ -23,8 +24,9 @@ namespace mlx::core { static bool __drop_sdl_responsability = false; - Application::Application() : _in(std::make_unique()) + Application::Application() : _fps(), _in(std::make_unique()) { + _fps.init(); __drop_sdl_responsability = SDL_WasInit(SDL_INIT_VIDEO); if(__drop_sdl_responsability) // is case the mlx is running in a sandbox like MacroUnitTester where SDL is already init return; @@ -37,6 +39,8 @@ namespace mlx::core { while(_in->is_running()) { + if(!_fps.update()) + continue; _in->update(); if(_loop_hook) @@ -84,6 +88,7 @@ namespace mlx::core Application::~Application() { TextLibrary::get().clearLibrary(); + FontLibrary::get().clearLibrary(); if(__drop_sdl_responsability) return; SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_EVENTS); diff --git a/MacroLibX/src/core/application.h b/MacroLibX/src/core/application.h index 6b4ee97..a4bb649 100644 --- a/MacroLibX/src/core/application.h +++ b/MacroLibX/src/core/application.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 21:49:46 by maldavid #+# #+# */ -/* Updated: 2024/01/10 19:57:12 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 14:59:47 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ #include #include #include +#include namespace mlx::core { @@ -39,7 +40,9 @@ namespace mlx::core inline void onEvent(void* win, int event, int (*funct_ptr)(int, void*), void* param) noexcept; - inline void getScreenSize(int* w, int* h) noexcept; + inline void getScreenSize(void* win, int* w, int* h) noexcept; + + inline void setFPSCap(uint32_t fps) noexcept; inline void* newGraphicsSuport(std::size_t w, std::size_t h, const char* title); inline void clearGraphicsSupport(void* win); @@ -65,6 +68,7 @@ namespace mlx::core ~Application(); private: + FpsManager _fps; std::list _textures; std::vector> _graphics; std::function _loop_hook; diff --git a/MacroLibX/src/core/application.inl b/MacroLibX/src/core/application.inl index c942efb..dbc2f5c 100644 --- a/MacroLibX/src/core/application.inl +++ b/MacroLibX/src/core/application.inl @@ -42,7 +42,6 @@ namespace mlx::core } SDL_WarpMouseInWindow(_graphics[*static_cast(win)]->getWindow()->getNativeWindow(), x, y); SDL_PumpEvents(); - SDL_FlushEvent(SDL_MOUSEMOTION); } void Application::onEvent(void* win, int event, int (*funct_ptr)(int, void*), void* param) noexcept @@ -56,14 +55,20 @@ namespace mlx::core _in->onEvent(_graphics[*static_cast(win)]->getWindow()->getID(), event, funct_ptr, param); } - void Application::getScreenSize(int* w, int* h) noexcept + void Application::getScreenSize(void* win, int* w, int* h) noexcept { + CHECK_WINDOW_PTR(win); SDL_DisplayMode DM; - SDL_GetDesktopDisplayMode(0, &DM); + SDL_GetDesktopDisplayMode(SDL_GetWindowDisplayIndex(_graphics[*static_cast(win)]->getWindow()->getNativeWindow()), &DM); *w = DM.w; *h = DM.h; } + void Application::setFPSCap(uint32_t fps) noexcept + { + _fps.setMaxFPS(fps); + } + void* Application::newGraphicsSuport(std::size_t w, std::size_t h, const char* title) { MLX_PROFILE_FUNCTION(); diff --git a/MacroLibX/src/core/bridge.cpp b/MacroLibX/src/core/bridge.cpp index f2d947b..e714b6b 100644 --- a/MacroLibX/src/core/bridge.cpp +++ b/MacroLibX/src/core/bridge.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:35:20 by maldavid #+# #+# */ -/* Updated: 2024/01/10 19:54:51 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 15:02:06 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,6 +47,11 @@ extern "C" void* mlx_new_window(void* mlx, int w, int h, const char* title) { MLX_CHECK_APPLICATION_POINTER(mlx); + if(w <= 0 || h <= 0) + { + mlx::core::error::report(e_kind::fatal_error, "invalid window size (%d x %d)", w, h); + return NULL; // not nullptr for the C compatibility + } return static_cast(mlx)->newGraphicsSuport(w, h, title); } @@ -73,12 +78,14 @@ extern "C" int mlx_mouse_show() { - return SDL_ShowCursor(SDL_ENABLE); + SDL_ShowCursor(SDL_ENABLE); + return 0; } int mlx_mouse_hide() { - return SDL_ShowCursor(SDL_DISABLE); + SDL_ShowCursor(SDL_DISABLE); + return 0; } int mlx_mouse_move(void* mlx, void* win, int x, int y) @@ -105,6 +112,8 @@ extern "C" void* mlx_new_image(void* mlx, int width, int height) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (width <= 0 || height <= 0) + mlx::core::error::report(e_kind::fatal_error, "invalid image size (%d x %d)", width, height); return static_cast(mlx)->newTexture(width, height); } @@ -142,6 +151,8 @@ extern "C" void* mlx_png_file_to_image(void* mlx, char* filename, int* width, int* height) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (filename == nullptr) + mlx::core::error::report(e_kind::fatal_error, "PNG loader : filename is NULL"); std::filesystem::path file(filename); if(file.extension() != ".png") { @@ -154,6 +165,8 @@ extern "C" void* mlx_jpg_file_to_image(void* mlx, char* filename, int* width, int* height) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (filename == nullptr) + mlx::core::error::report(e_kind::fatal_error, "JPG loader : filename is NULL"); std::filesystem::path file(filename); if(file.extension() != ".jpg" && file.extension() != ".jpeg") { @@ -166,6 +179,8 @@ extern "C" void* mlx_bmp_file_to_image(void* mlx, char* filename, int* width, int* height) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (filename == nullptr) + mlx::core::error::report(e_kind::fatal_error, "BMP loader : filename is NULL"); std::filesystem::path file(filename); if(file.extension() != ".bmp" && file.extension() != ".dib") { @@ -202,6 +217,11 @@ extern "C" void mlx_set_font(void* mlx, void* win, char* filepath) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (filepath == nullptr) + { + mlx::core::error::report(e_kind::error, "Font loader : filepath is NULL"); + return; + } std::filesystem::path file(filepath); if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte") { @@ -214,6 +234,11 @@ extern "C" void mlx_set_font_scale(void* mlx, void* win, char* filepath, float scale) { MLX_CHECK_APPLICATION_POINTER(mlx); + if (filepath == nullptr) + { + mlx::core::error::report(e_kind::error, "Font loader : filepath is NULL"); + return; + } std::filesystem::path file(filepath); if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte") { @@ -246,10 +271,27 @@ extern "C" return 0; } - int mlx_get_screens_size(void* mlx, int* w, int* h) + int mlx_get_screens_size(void* mlx, void* win, int* w, int* h) { MLX_CHECK_APPLICATION_POINTER(mlx); - static_cast(mlx)->getScreenSize(w, h); + static_cast(mlx)->getScreenSize(win, w, h); + return 0; + } + + int mlx_set_fps_goal(void* mlx, int fps) + { + MLX_CHECK_APPLICATION_POINTER(mlx); + if(fps < 0) + { + mlx::core::error::report(e_kind::error, "You cannot set a negative FPS cap (nice try)"); + fps = -fps; + } + if(fps == 0) + { + mlx::core::error::report(e_kind::error, "You cannot set a FPS cap to 0 (nice try)"); + return 0; + } + static_cast(mlx)->setFPSCap(static_cast(fps)); return 0; } } diff --git a/MacroLibX/src/core/fps.cpp b/MacroLibX/src/core/fps.cpp new file mode 100644 index 0000000..db76414 --- /dev/null +++ b/MacroLibX/src/core/fps.cpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* fps.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: maldavid +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/18 14:56:17 by maldavid #+# #+# */ +/* Updated: 2024/01/18 15:20:03 by maldavid ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include + +namespace mlx +{ + void FpsManager::init() + { + _timer = SDL_GetTicks64(); + _fps_before = static_cast(std::chrono::duration_cast(std::chrono::high_resolution_clock::now().time_since_epoch()).count()); + _fps_now = static_cast(std::chrono::duration_cast(std::chrono::high_resolution_clock::now().time_since_epoch()).count()); + } + + bool FpsManager::update() + { + using namespace std::chrono_literals; + _fps_now = static_cast(std::chrono::duration_cast(std::chrono::high_resolution_clock::now().time_since_epoch()).count()); + + if(SDL_GetTicks64() - _timer > 1000) + _timer += 1000; + + _fps_elapsed_time = _fps_now - _fps_before; + if(_fps_elapsed_time >= _ns) + { + _fps_before += _ns; + return true; + } + std::this_thread::sleep_for(std::chrono::duration(_ns)); + return false; + } +} diff --git a/MacroLibX/src/core/fps.h b/MacroLibX/src/core/fps.h new file mode 100644 index 0000000..80f25db --- /dev/null +++ b/MacroLibX/src/core/fps.h @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* fps.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: maldavid +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/18 14:53:30 by maldavid #+# #+# */ +/* Updated: 2024/01/18 15:16:06 by maldavid ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef __MLX_FPS__ +#define __MLX_FPS__ + +#include + +namespace mlx +{ + class FpsManager + { + public: + FpsManager() = default; + + void init(); + bool update(); + inline void setMaxFPS(uint32_t fps) noexcept { _max_fps = fps; _ns = 1000000000.0 / fps; } + + ~FpsManager() = default; + + private: + double _ns = 1000000000.0 / 1'337'000.0; + uint64_t _timer = 0; + uint64_t _fps_before = 0; + uint64_t _fps_now = 0; + uint32_t _max_fps = 1'337'000; + uint32_t _fps_elapsed_time = 0; + }; +} + +#endif diff --git a/MacroLibX/src/platform/inputs.cpp b/MacroLibX/src/platform/inputs.cpp index 412732a..738fa1b 100644 --- a/MacroLibX/src/platform/inputs.cpp +++ b/MacroLibX/src/platform/inputs.cpp @@ -6,13 +6,12 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */ -/* Updated: 2024/01/10 18:31:13 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:59:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include "inputs.h" #include -#include #include namespace mlx @@ -35,7 +34,7 @@ namespace mlx } uint32_t id = _event.window.windowID; - if(!_events_hooks.count(id)) + if(_events_hooks.find(id) == _events_hooks.end()) continue; auto& hooks = _events_hooks[id]; diff --git a/MacroLibX/src/platform/inputs.h b/MacroLibX/src/platform/inputs.h index fb663fc..e550009 100644 --- a/MacroLibX/src/platform/inputs.h +++ b/MacroLibX/src/platform/inputs.h @@ -6,15 +6,14 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */ -/* Updated: 2023/12/11 19:47:20 by vavaas ### ########.fr */ +/* Updated: 2024/01/16 07:59:08 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include #include -#include #include -#include +#include #include #include @@ -26,7 +25,7 @@ namespace mlx { struct Hook { - std::function hook; + func::function hook; void* param = nullptr; }; diff --git a/MacroLibX/src/platform/window.cpp b/MacroLibX/src/platform/window.cpp index aee77aa..44827ac 100644 --- a/MacroLibX/src/platform/window.cpp +++ b/MacroLibX/src/platform/window.cpp @@ -6,14 +6,13 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:36:44 by maldavid #+# #+# */ -/* Updated: 2023/12/27 16:57:28 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:59:21 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include #include #include -#include namespace mlx { diff --git a/MacroLibX/src/renderer/core/memory.cpp b/MacroLibX/src/renderer/core/memory.cpp index 1e3ede0..ccb8ed0 100644 --- a/MacroLibX/src/renderer/core/memory.cpp +++ b/MacroLibX/src/renderer/core/memory.cpp @@ -6,7 +6,7 @@ /* By: kbz_8 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/20 22:02:37 by kbz_8 #+# #+# */ -/* Updated: 2024/01/10 21:54:35 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:11:02 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -98,7 +98,7 @@ namespace mlx vmaSetAllocationName(_allocator, allocation, name); } #ifdef DEBUG - core::error::report(e_kind::message, "Graphics Allocator : created new buffer"); + core::error::report(e_kind::message, "Graphics Allocator : created new buffer '%s'", name); #endif _active_buffers_allocations++; return allocation; @@ -128,7 +128,7 @@ namespace mlx vmaSetAllocationName(_allocator, allocation, name); } #ifdef DEBUG - core::error::report(e_kind::message, "Graphics Allocator : created new image"); + core::error::report(e_kind::message, "Graphics Allocator : created new image '%s'", name); #endif _active_images_allocations++; return allocation; diff --git a/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.cpp b/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.cpp index 188403f..03df39e 100644 --- a/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.cpp +++ b/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:34:23 by maldavid #+# #+# */ -/* Updated: 2024/01/03 13:13:54 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:19:55 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ namespace mlx poolInfo.poolSizeCount = n; poolInfo.pPoolSizes = size; poolInfo.maxSets = 8192; + poolInfo.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; VkResult res = vkCreateDescriptorPool(Render_Core::get().getDevice().get(), &poolInfo, nullptr, &_pool); if(res != VK_SUCCESS) diff --git a/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.h b/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.h index 82cf9c4..2c624ef 100644 --- a/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.h +++ b/MacroLibX/src/renderer/descriptors/vk_descriptor_pool.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:32:43 by maldavid #+# #+# */ -/* Updated: 2024/01/03 15:27:45 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:22:20 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,8 @@ namespace mlx inline VkDescriptorPool& operator()() noexcept { return _pool; } inline VkDescriptorPool& get() noexcept { return _pool; } + inline bool isInit() const noexcept { return _pool != VK_NULL_HANDLE; } + private: VkDescriptorPool _pool = VK_NULL_HANDLE; }; diff --git a/MacroLibX/src/renderer/descriptors/vk_descriptor_set.cpp b/MacroLibX/src/renderer/descriptors/vk_descriptor_set.cpp index 423db02..8af5877 100644 --- a/MacroLibX/src/renderer/descriptors/vk_descriptor_set.cpp +++ b/MacroLibX/src/renderer/descriptors/vk_descriptor_set.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:40:44 by maldavid #+# #+# */ -/* Updated: 2024/01/10 18:28:34 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:22:10 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -106,8 +106,24 @@ namespace mlx { return _desc_set[_renderer->getActiveImageIndex()]; } + VkDescriptorSet& DescriptorSet::get() noexcept { return _desc_set[_renderer->getActiveImageIndex()]; } + + void DescriptorSet::destroy() noexcept + { + MLX_PROFILE_FUNCTION(); + if(_pool->isInit()) + vkFreeDescriptorSets(Render_Core::get().getDevice().get(), _pool->get(), _desc_set.size(), _desc_set.data()); + for(auto& set : _desc_set) + { + if(set != VK_NULL_HANDLE) + set = VK_NULL_HANDLE; + } + #ifdef DEBUG + core::error::report(e_kind::message, "Vulkan : destroyed descriptor set"); + #endif + } } diff --git a/MacroLibX/src/renderer/descriptors/vk_descriptor_set.h b/MacroLibX/src/renderer/descriptors/vk_descriptor_set.h index d555d5c..5f2191e 100644 --- a/MacroLibX/src/renderer/descriptors/vk_descriptor_set.h +++ b/MacroLibX/src/renderer/descriptors/vk_descriptor_set.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:39:36 by maldavid #+# #+# */ -/* Updated: 2024/01/03 15:27:50 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:13:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,6 +35,8 @@ namespace mlx VkDescriptorSet& operator()() noexcept; VkDescriptorSet& get() noexcept; + void destroy() noexcept; + private: std::array _desc_set; class DescriptorPool* _pool = nullptr; diff --git a/MacroLibX/src/renderer/images/texture.cpp b/MacroLibX/src/renderer/images/texture.cpp index 2206f64..16d693f 100644 --- a/MacroLibX/src/renderer/images/texture.cpp +++ b/MacroLibX/src/renderer/images/texture.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/03/31 18:03:35 by maldavid #+# #+# */ -/* Updated: 2024/01/11 01:20:29 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:18:22 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -155,6 +155,7 @@ namespace mlx { MLX_PROFILE_FUNCTION(); Image::destroy(); + _set.destroy(); if(_buf_map.has_value()) _buf_map->destroy(); _vbo.destroy(); diff --git a/MacroLibX/src/renderer/images/texture_atlas.cpp b/MacroLibX/src/renderer/images/texture_atlas.cpp index b6eb61b..c03d712 100644 --- a/MacroLibX/src/renderer/images/texture_atlas.cpp +++ b/MacroLibX/src/renderer/images/texture_atlas.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/07 16:40:09 by maldavid #+# #+# */ -/* Updated: 2023/12/31 00:52:01 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 10:18:08 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -51,5 +51,6 @@ namespace mlx void TextureAtlas::destroy() noexcept { Image::destroy(); + _set.destroy(); } } diff --git a/MacroLibX/src/renderer/images/texture_atlas.h b/MacroLibX/src/renderer/images/texture_atlas.h index 5fd4da9..bc465d7 100644 --- a/MacroLibX/src/renderer/images/texture_atlas.h +++ b/MacroLibX/src/renderer/images/texture_atlas.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/07 16:36:33 by maldavid #+# #+# */ -/* Updated: 2024/01/08 21:42:31 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 02:47:30 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,8 @@ namespace mlx void destroy() noexcept override; inline void setDescriptor(DescriptorSet&& set) noexcept { _set = set; } - inline VkDescriptorSet getSet() noexcept { return _set.isInit() ? _set.get() : VK_NULL_HANDLE; } + inline VkDescriptorSet getVkSet() noexcept { return _set.isInit() ? _set.get() : VK_NULL_HANDLE; } + inline DescriptorSet getSet() noexcept { return _set; } inline void updateSet(int binding) noexcept { _set.writeDescriptor(binding, *this); _has_been_updated = true; } inline bool hasBeenUpdated() const noexcept { return _has_been_updated; } inline constexpr void resetUpdate() noexcept { _has_been_updated = false; } diff --git a/MacroLibX/src/renderer/images/vk_image.cpp b/MacroLibX/src/renderer/images/vk_image.cpp index 3cf0592..412387e 100644 --- a/MacroLibX/src/renderer/images/vk_image.cpp +++ b/MacroLibX/src/renderer/images/vk_image.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/25 11:59:07 by maldavid #+# #+# */ -/* Updated: 2024/01/07 01:17:54 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 09:47:26 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -252,16 +252,16 @@ namespace mlx void Image::destroy() noexcept { // not creating destroyer in `create` as some image may be copied (and so `this` will be invalid) - CmdResource::setDestroyer([this]() - { + //CmdResource::setDestroyer([this]() + //{ destroySampler(); destroyImageView(); if(_image != VK_NULL_HANDLE) Render_Core::get().getAllocator().destroyImage(_allocation, _image); _image = VK_NULL_HANDLE; - }); - CmdResource::requireDestroy(); + //}); + //CmdResource::requireDestroy(); } uint32_t formatSize(VkFormat format) diff --git a/MacroLibX/src/renderer/pipeline/pipeline.cpp b/MacroLibX/src/renderer/pipeline/pipeline.cpp index b8ca2b6..06ebfd3 100644 --- a/MacroLibX/src/renderer/pipeline/pipeline.cpp +++ b/MacroLibX/src/renderer/pipeline/pipeline.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */ -/* Updated: 2024/01/10 21:53:38 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:45:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,7 +49,7 @@ namespace mlx gl_Position = uProj.mat * vec4(pos.x, pos.y, 0.0, 1.0); } */ - const std::vector vertex_shader = { + const std::vector vertex_shader = { // precompiled vertex shader 0x07230203,0x00010000,0x0008000b,0x0000003b,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, 0x000a000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000000f,0x00000015, @@ -124,7 +124,7 @@ namespace mlx fColor = process_color; } */ - const std::vector fragment_shader = { + const std::vector fragment_shader = { // pre compiled fragment shader 0x07230203,0x00010000,0x0008000b,0x0000002c,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000002a,0x00030010, diff --git a/MacroLibX/src/renderer/renderer.cpp b/MacroLibX/src/renderer/renderer.cpp index 6cb8578..2e3b1c1 100644 --- a/MacroLibX/src/renderer/renderer.cpp +++ b/MacroLibX/src/renderer/renderer.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 17:25:16 by maldavid #+# #+# */ -/* Updated: 2024/01/10 14:18:35 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:02:57 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -82,7 +82,7 @@ namespace mlx if(result == VK_ERROR_OUT_OF_DATE_KHR) { - _swapchain.recreate(); + recreateRenderData(); return false; } else if(result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) @@ -145,7 +145,7 @@ namespace mlx if(result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || _framebufferResized) { _framebufferResized = false; - _swapchain.recreate(); + recreateRenderData(); } else if(result != VK_SUCCESS) core::error::report(e_kind::fatal_error, "Vulkan error : failed to present swap chain image"); @@ -158,6 +158,18 @@ namespace mlx } } + void Renderer::recreateRenderData() + { + _swapchain.recreate(); + _pass.destroy(); + _pass.init(_swapchain.getImagesFormat(), VK_IMAGE_LAYOUT_PRESENT_SRC_KHR); + for(auto& fb : _framebuffers) + fb.destroy(); + _framebuffers.clear(); + for(std::size_t i = 0; i < _swapchain.getImagesNumber(); i++) + _framebuffers.emplace_back().init(_pass, _swapchain.getImage(i)); + } + void Renderer::destroy() { MLX_PROFILE_FUNCTION(); diff --git a/MacroLibX/src/renderer/renderer.h b/MacroLibX/src/renderer/renderer.h index 7b4dd5f..1d4869b 100644 --- a/MacroLibX/src/renderer/renderer.h +++ b/MacroLibX/src/renderer/renderer.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 17:14:45 by maldavid #+# #+# */ -/* Updated: 2023/12/22 21:59:15 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/16 08:01:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -113,6 +113,9 @@ namespace mlx ~Renderer() = default; + private: + void recreateRenderData(); + private: GraphicPipeline _pipeline; CmdManager _cmd; diff --git a/MacroLibX/src/renderer/renderpass/vk_render_pass.cpp b/MacroLibX/src/renderer/renderpass/vk_render_pass.cpp index 06b5e75..a4a08a1 100644 --- a/MacroLibX/src/renderer/renderpass/vk_render_pass.cpp +++ b/MacroLibX/src/renderer/renderpass/vk_render_pass.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:21:36 by maldavid #+# #+# */ -/* Updated: 2024/01/10 21:53:03 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:22:39 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ namespace mlx { - static const VkClearValue clearColor = {{{ 0.0f, 0.0f, 0.0f, 1.0f }}}; // wtf, this mess to satisfy a warning + static const VkClearValue clearColor = {{{ 0.f, 0.f, 0.f, 1.0f }}}; // wtf, this mess to satisfy a warning void RenderPass::init(VkFormat attachement_format, VkImageLayout layout) { diff --git a/MacroLibX/src/renderer/texts/font.cpp b/MacroLibX/src/renderer/texts/font.cpp index c508c99..d025e12 100644 --- a/MacroLibX/src/renderer/texts/font.cpp +++ b/MacroLibX/src/renderer/texts/font.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/12/11 22:06:09 by kbz_8 #+# #+# */ -/* Updated: 2024/01/11 01:23:20 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 13:16:18 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,51 +19,43 @@ constexpr const int RANGE = 1024; namespace mlx { - Font::Font(Renderer& renderer, const std::filesystem::path& path, float scale) : non_copyable(), _name(path.string()), _scale(scale) + Font::Font(Renderer& renderer, const std::filesystem::path& path, float scale) : _name(path.string()), _renderer(renderer), _scale(scale) { - MLX_PROFILE_FUNCTION(); - std::vector tmp_bitmap(RANGE * RANGE); - std::vector vulkan_bitmap(RANGE * RANGE * 4); - - std::ifstream file(path, std::ios::binary); - if(!file.is_open()) - { - core::error::report(e_kind::error, "Font load : cannot open font file, %s", _name.c_str()); - return; - } - std::ifstream::pos_type fileSize = std::filesystem::file_size(path); - file.seekg(0, std::ios::beg); - std::vector bytes(fileSize); - file.read(reinterpret_cast(bytes.data()), fileSize); - file.close(); - - stbtt_pack_context pc; - stbtt_PackBegin(&pc, tmp_bitmap.data(), RANGE, RANGE, RANGE, 1, nullptr); - stbtt_PackFontRange(&pc, bytes.data(), 0, scale, 32, 96, _cdata.data()); - stbtt_PackEnd(&pc); - for(int i = 0, j = 0; i < RANGE * RANGE; i++, j += 4) - { - vulkan_bitmap[j + 0] = tmp_bitmap[i]; - vulkan_bitmap[j + 1] = tmp_bitmap[i]; - vulkan_bitmap[j + 2] = tmp_bitmap[i]; - vulkan_bitmap[j + 3] = tmp_bitmap[i]; - } - #ifdef DEBUG - _atlas.create(vulkan_bitmap.data(), RANGE, RANGE, VK_FORMAT_R8G8B8A8_UNORM, std::string(_name + "_font_altas").c_str(), true); - #else - _atlas.create(vulkan_bitmap.data(), RANGE, RANGE, VK_FORMAT_R8G8B8A8_UNORM, nullptr, true); - #endif - _atlas.setDescriptor(renderer.getFragDescriptorSet().duplicate()); + _build_data = path; } - Font::Font(class Renderer& renderer, const std::string& name, const std::vector& ttf_data, float scale) : non_copyable(), _name(name), _scale(scale) + Font::Font(class Renderer& renderer, const std::string& name, const std::vector& ttf_data, float scale) : _name(name), _renderer(renderer), _scale(scale) + { + _build_data = ttf_data; + } + + void Font::buildFont() { MLX_PROFILE_FUNCTION(); + std::vector file_bytes; + if(std::holds_alternative(_build_data)) + { + std::ifstream file(std::get(_build_data), std::ios::binary); + if(!file.is_open()) + { + core::error::report(e_kind::error, "Font load : cannot open font file, %s", _name.c_str()); + return; + } + std::ifstream::pos_type fileSize = std::filesystem::file_size(std::get(_build_data)); + file.seekg(0, std::ios::beg); + file_bytes.resize(fileSize); + file.read(reinterpret_cast(file_bytes.data()), fileSize); + file.close(); + } + std::vector tmp_bitmap(RANGE * RANGE); std::vector vulkan_bitmap(RANGE * RANGE * 4); stbtt_pack_context pc; stbtt_PackBegin(&pc, tmp_bitmap.data(), RANGE, RANGE, RANGE, 1, nullptr); - stbtt_PackFontRange(&pc, ttf_data.data(), 0, scale, 32, 96, _cdata.data()); + if(std::holds_alternative(_build_data)) + stbtt_PackFontRange(&pc, file_bytes.data(), 0, _scale, 32, 96, _cdata.data()); + else + stbtt_PackFontRange(&pc, std::get>(_build_data).data(), 0, _scale, 32, 96, _cdata.data()); stbtt_PackEnd(&pc); for(int i = 0, j = 0; i < RANGE * RANGE; i++, j += 4) { @@ -77,12 +69,20 @@ namespace mlx #else _atlas.create(vulkan_bitmap.data(), RANGE, RANGE, VK_FORMAT_R8G8B8A8_UNORM, nullptr, true); #endif - _atlas.setDescriptor(renderer.getFragDescriptorSet().duplicate()); + _atlas.setDescriptor(_renderer.getFragDescriptorSet().duplicate()); + _is_init = true; + } + + void Font::destroy() + { + MLX_PROFILE_FUNCTION(); + _atlas.destroy(); + _is_init = false; } Font::~Font() { - MLX_PROFILE_FUNCTION(); - _atlas.destroy(); + if(_is_init) + destroy(); } } diff --git a/MacroLibX/src/renderer/texts/font.h b/MacroLibX/src/renderer/texts/font.h index d25c4b7..9e39cde 100644 --- a/MacroLibX/src/renderer/texts/font.h +++ b/MacroLibX/src/renderer/texts/font.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/12/11 21:17:04 by kbz_8 #+# #+# */ -/* Updated: 2023/12/14 17:51:40 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 13:15:55 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,45 +15,41 @@ #include #include -#include #include #include +#include namespace mlx { - class Font : public non_copyable + class Font { + friend class FontLibrary; public: Font() = delete; Font(class Renderer& renderer, const std::filesystem::path& path, float scale); Font(class Renderer& renderer, const std::string& name, const std::vector& ttf_data, float scale); + inline const std::string& getName() const { return _name; } inline float getScale() const noexcept { return _scale; } inline const std::array& getCharData() const { return _cdata; } inline const TextureAtlas& getAtlas() const noexcept { return _atlas; } - inline bool operator==(const Font& rhs) const { return rhs._name == _name; } - inline bool operator!=(const Font& rhs) const { return rhs._name != _name; } + inline bool operator==(const Font& rhs) const { return rhs._name == _name && rhs._scale == _scale; } + inline bool operator!=(const Font& rhs) const { return rhs._name != _name || rhs._scale != _scale; } + void destroy(); + ~Font(); + private: + void buildFont(); + private: std::array _cdata; TextureAtlas _atlas; + std::variant> _build_data; std::string _name; + class Renderer& _renderer; float _scale = 0; - }; -} - -namespace std -{ - template <> - struct hash - { - std::size_t operator()(const mlx::Font& f) const noexcept - { - std::size_t hash = 0; - mlx::hashCombine(hash, f.getName(), f.getScale()); - return hash; - } + bool _is_init = false; }; } diff --git a/MacroLibX/src/renderer/texts/font_library.cpp b/MacroLibX/src/renderer/texts/font_library.cpp new file mode 100644 index 0000000..e3a04c0 --- /dev/null +++ b/MacroLibX/src/renderer/texts/font_library.cpp @@ -0,0 +1,69 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* font_library.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: maldavid +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/18 09:28:14 by maldavid #+# #+# */ +/* Updated: 2024/01/18 13:07:48 by maldavid ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include +#include + +namespace mlx +{ + std::shared_ptr FontLibrary::getFontData(FontID id) + { + MLX_PROFILE_FUNCTION(); + if(!_cache.count(id) || std::find(_invalid_ids.begin(), _invalid_ids.end(), id) != _invalid_ids.end()) + core::error::report(e_kind::fatal_error, "Font Library : wrong font ID '%d'", id); + return _cache[id]; + } + + FontID FontLibrary::addFontToLibrary(std::shared_ptr font) + { + MLX_PROFILE_FUNCTION(); + auto it = std::find_if(_cache.begin(), _cache.end(), [&](const std::pair>& v) + { + return v.second->getScale() == font->getScale() && + v.second->getName() == font->getName() && + std::find(_invalid_ids.begin(), _invalid_ids.end(), v.first) == _invalid_ids.end(); + }); + if(it != _cache.end()) + return it->first; + font->buildFont(); + _cache[_current_id] = font; + _current_id++; + return _current_id - 1; + } + + void FontLibrary::removeFontFromLibrary(FontID id) + { + MLX_PROFILE_FUNCTION(); + if(!_cache.count(id) || std::find(_invalid_ids.begin(), _invalid_ids.end(), id) != _invalid_ids.end()) + { + core::error::report(e_kind::warning, "Font Library : trying to remove a font with an unkown or invalid ID '%d'", id); + return; + } + _cache[id]->destroy(); + _invalid_ids.push_back(id); + } + + void FontLibrary::clearLibrary() + { + MLX_PROFILE_FUNCTION(); + for(auto& [id, font] : _cache) + { + font->destroy(); + _invalid_ids.push_back(id); + } + // do not `_cache.clear();` as it releases the fonts and may not destroy the texture atlas that is in use by command buffers + } +} diff --git a/MacroLibX/src/renderer/texts/font_library.h b/MacroLibX/src/renderer/texts/font_library.h new file mode 100644 index 0000000..9a1d4dc --- /dev/null +++ b/MacroLibX/src/renderer/texts/font_library.h @@ -0,0 +1,52 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* font_library.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: maldavid +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/18 09:26:03 by maldavid #+# #+# */ +/* Updated: 2024/01/18 09:33:30 by maldavid ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef __MLX_FONT_LIBRARY__ +#define __MLX_FONT_LIBRARY__ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mlx +{ + using FontID = uint32_t; + constexpr FontID nullfont = 0; + + class FontLibrary : public Singleton + { + friend class Singleton; + + public: + std::shared_ptr getFontData(FontID id); + FontID addFontToLibrary(std::shared_ptr font); + void removeFontFromLibrary(FontID id); + + void clearLibrary(); + + private: + FontLibrary() = default; + ~FontLibrary() = default; + + private: + std::unordered_map> _cache; + std::vector _invalid_ids; + FontID _current_id = 1; + }; +} + +#endif diff --git a/MacroLibX/src/renderer/texts/text.cpp b/MacroLibX/src/renderer/texts/text.cpp index bf1823d..b26c01c 100644 --- a/MacroLibX/src/renderer/texts/text.cpp +++ b/MacroLibX/src/renderer/texts/text.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:11:56 by maldavid #+# #+# */ -/* Updated: 2024/01/11 03:31:57 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 13:56:50 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,15 +16,21 @@ namespace mlx { - void Text::init(std::string text, Font const* font, std::vector vbo_data, std::vector ibo_data) + void Text::init(std::string text, FontID font, std::vector vbo_data, std::vector ibo_data) { MLX_PROFILE_FUNCTION(); _text = std::move(text); _font = font; #ifdef DEBUG + std::string debug_name = _text; + for(char& c : debug_name) + { + if(c == ' ' || c == '"' || c == '\'') + c = '_'; + } for(int i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) - _vbo[i].create(sizeof(Vertex) * vbo_data.size(), static_cast(vbo_data.data()), _text.c_str()); - _ibo.create(sizeof(uint16_t) * ibo_data.size(), ibo_data.data(), _text.c_str()); + _vbo[i].create(sizeof(Vertex) * vbo_data.size(), static_cast(vbo_data.data()), debug_name.c_str()); + _ibo.create(sizeof(uint16_t) * ibo_data.size(), ibo_data.data(), debug_name.c_str()); #else for(int i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) _vbo[i].create(sizeof(Vertex) * vbo_data.size(), static_cast(vbo_data.data()), nullptr); diff --git a/MacroLibX/src/renderer/texts/text.h b/MacroLibX/src/renderer/texts/text.h index eff6f8a..44bd7a1 100644 --- a/MacroLibX/src/renderer/texts/text.h +++ b/MacroLibX/src/renderer/texts/text.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:09:04 by maldavid #+# #+# */ -/* Updated: 2024/01/11 00:13:25 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 09:37:42 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -26,9 +27,9 @@ namespace mlx public: Text() = default; - void init(std::string text, Font const* font, std::vector vbo_data, std::vector ibo_data); + void init(std::string text, FontID font, std::vector vbo_data, std::vector ibo_data); void bind(class Renderer& renderer) noexcept; - inline const Font& getFontInUse() const noexcept { return *_font; } + inline FontID getFontInUse() const noexcept { return _font; } void updateVertexData(int frame, std::vector vbo_data); inline uint32_t getIBOsize() noexcept { return _ibo.getSize(); } inline const std::string& getText() const { return _text; } @@ -40,7 +41,7 @@ namespace mlx std::array _vbo; C_IBO _ibo; std::string _text; - Font const* _font = nullptr; + FontID _font = nullfont; }; } diff --git a/MacroLibX/src/renderer/texts/text_descriptor.cpp b/MacroLibX/src/renderer/texts/text_descriptor.cpp index bc1f35a..4db185a 100644 --- a/MacroLibX/src/renderer/texts/text_descriptor.cpp +++ b/MacroLibX/src/renderer/texts/text_descriptor.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:23:11 by maldavid #+# #+# */ -/* Updated: 2024/01/11 03:40:54 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 09:44:54 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ namespace mlx TextDrawDescriptor::TextDrawDescriptor(std::string text, uint32_t _color, int _x, int _y) : color(_color), x(_x), y(_y), _text(std::move(text)) {} - void TextDrawDescriptor::init(Font* const font) noexcept + void TextDrawDescriptor::init(FontID font) noexcept { MLX_PROFILE_FUNCTION(); std::vector vertexData; @@ -42,34 +42,38 @@ namespace mlx float stb_x = 0.0f; float stb_y = 0.0f; - for(char c : _text) { - if(c < 32) - continue; + std::shared_ptr font_data = FontLibrary::get().getFontData(font); - stbtt_aligned_quad q; - stbtt_GetPackedQuad(font->getCharData().data(), RANGE, RANGE, c - 32, &stb_x, &stb_y, &q, 1); + for(char c : _text) + { + if(c < 32) + continue; - std::size_t index = vertexData.size(); + stbtt_aligned_quad q; + stbtt_GetPackedQuad(font_data->getCharData().data(), RANGE, RANGE, c - 32, &stb_x, &stb_y, &q, 1); - glm::vec4 vertex_color = { - static_cast((color & 0x000000FF)) / 255.f, - static_cast((color & 0x0000FF00) >> 8) / 255.f, - static_cast((color & 0x00FF0000) >> 16) / 255.f, - static_cast((color & 0xFF000000) >> 24) / 255.f - }; + std::size_t index = vertexData.size(); - vertexData.emplace_back(glm::vec2{q.x0, q.y0}, vertex_color, glm::vec2{q.s0, q.t0}); - vertexData.emplace_back(glm::vec2{q.x1, q.y0}, vertex_color, glm::vec2{q.s1, q.t0}); - vertexData.emplace_back(glm::vec2{q.x1, q.y1}, vertex_color, glm::vec2{q.s1, q.t1}); - vertexData.emplace_back(glm::vec2{q.x0, q.y1}, vertex_color, glm::vec2{q.s0, q.t1}); + glm::vec4 vertex_color = { + static_cast((color & 0x000000FF)) / 255.f, + static_cast((color & 0x0000FF00) >> 8) / 255.f, + static_cast((color & 0x00FF0000) >> 16) / 255.f, + static_cast((color & 0xFF000000) >> 24) / 255.f + }; - indexData.emplace_back(index + 0); - indexData.emplace_back(index + 1); - indexData.emplace_back(index + 2); - indexData.emplace_back(index + 2); - indexData.emplace_back(index + 3); - indexData.emplace_back(index + 0); + vertexData.emplace_back(glm::vec2{q.x0, q.y0}, vertex_color, glm::vec2{q.s0, q.t0}); + vertexData.emplace_back(glm::vec2{q.x1, q.y0}, vertex_color, glm::vec2{q.s1, q.t0}); + vertexData.emplace_back(glm::vec2{q.x1, q.y1}, vertex_color, glm::vec2{q.s1, q.t1}); + vertexData.emplace_back(glm::vec2{q.x0, q.y1}, vertex_color, glm::vec2{q.s0, q.t1}); + + indexData.emplace_back(index + 0); + indexData.emplace_back(index + 1); + indexData.emplace_back(index + 2); + indexData.emplace_back(index + 2); + indexData.emplace_back(index + 3); + indexData.emplace_back(index + 0); + } } std::shared_ptr text_data = std::make_shared(); text_data->init(_text, font, std::move(vertexData), std::move(indexData)); @@ -84,13 +88,14 @@ namespace mlx { MLX_PROFILE_FUNCTION(); std::shared_ptr draw_data = TextLibrary::get().getTextData(id); - TextureAtlas& atlas = const_cast(draw_data->getFontInUse().getAtlas()); + std::shared_ptr font_data = FontLibrary::get().getFontData(draw_data->getFontInUse()); + TextureAtlas& atlas = const_cast(font_data->getAtlas()); draw_data->bind(renderer); - if(atlas.getSet() == VK_NULL_HANDLE) + if(!atlas.getSet().isInit()) atlas.setDescriptor(renderer.getFragDescriptorSet().duplicate()); if(!atlas.hasBeenUpdated()) atlas.updateSet(0); - sets[1] = const_cast(atlas).getSet(); + sets[1] = const_cast(atlas).getVkSet(); vkCmdBindDescriptorSets(renderer.getActiveCmdBuffer().get(), VK_PIPELINE_BIND_POINT_GRAPHICS, renderer.getPipeline().getPipelineLayout(), 0, sets.size(), sets.data(), 0, nullptr); atlas.render(renderer, x, y, draw_data->getIBOsize()); } @@ -98,7 +103,8 @@ namespace mlx void TextDrawDescriptor::resetUpdate() { std::shared_ptr draw_data = TextLibrary::get().getTextData(id); - TextureAtlas& atlas = const_cast(draw_data->getFontInUse().getAtlas()); + std::shared_ptr font_data = FontLibrary::get().getFontData(draw_data->getFontInUse()); + TextureAtlas& atlas = const_cast(font_data->getAtlas()); atlas.resetUpdate(); } } diff --git a/MacroLibX/src/renderer/texts/text_descriptor.h b/MacroLibX/src/renderer/texts/text_descriptor.h index b44300b..bc8d239 100644 --- a/MacroLibX/src/renderer/texts/text_descriptor.h +++ b/MacroLibX/src/renderer/texts/text_descriptor.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:13:34 by maldavid #+# #+# */ -/* Updated: 2024/01/11 04:28:58 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 09:40:06 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ #include #include #include +#include #include namespace mlx @@ -36,7 +37,7 @@ namespace mlx public: TextDrawDescriptor(std::string text, uint32_t _color, int _x, int _y); - void init(Font* const font) noexcept; + void init(FontID font) noexcept; bool operator==(const TextDrawDescriptor& rhs) const { return _text == rhs._text && x == rhs.x && y == rhs.y && color == rhs.color; } void render(std::array& sets, Renderer& renderer) override; void resetUpdate() override; diff --git a/MacroLibX/src/renderer/texts/text_library.cpp b/MacroLibX/src/renderer/texts/text_library.cpp index 9dd5658..4a61b38 100644 --- a/MacroLibX/src/renderer/texts/text_library.cpp +++ b/MacroLibX/src/renderer/texts/text_library.cpp @@ -6,11 +6,10 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/10 11:59:57 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:19:24 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 08:02:31 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ -#include #include #include #include diff --git a/MacroLibX/src/renderer/texts/text_library.h b/MacroLibX/src/renderer/texts/text_library.h index 19ae1eb..9bdef36 100644 --- a/MacroLibX/src/renderer/texts/text_library.h +++ b/MacroLibX/src/renderer/texts/text_library.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/10 11:52:30 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:08:04 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:54:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ #include #include -#include #include #include #include diff --git a/MacroLibX/src/renderer/texts/text_manager.cpp b/MacroLibX/src/renderer/texts/text_manager.cpp index d4a9f82..81dffd7 100644 --- a/MacroLibX/src/renderer/texts/text_manager.cpp +++ b/MacroLibX/src/renderer/texts/text_manager.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/06 16:41:13 by maldavid #+# #+# */ -/* Updated: 2024/01/11 04:54:16 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 09:45:24 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,28 @@ #include #include #include -#include #include -#include #include -#include namespace mlx { void TextManager::init(Renderer& renderer) noexcept { MLX_PROFILE_FUNCTION(); - _font_in_use = &const_cast(*_font_set.emplace(renderer, "default", dogica_ttf, 6.0f).first); + loadFont(renderer, "default", 6.f); } void TextManager::loadFont(Renderer& renderer, const std::filesystem::path& filepath, float scale) { MLX_PROFILE_FUNCTION(); - if(filepath.string() == "default") // we're sure it is already loaded - _font_in_use = &const_cast(*_font_set.emplace(renderer, "default", dogica_ttf, scale).first); + std::shared_ptr font; + if(filepath.string() == "default") + font = std::make_shared(renderer, "default", dogica_ttf, scale); else - _font_in_use = &const_cast(*_font_set.emplace(renderer, filepath, scale).first); + font = std::make_shared(renderer, filepath, scale); + + _font_in_use = FontLibrary::get().addFontToLibrary(font); } std::pair TextManager::registerText(int x, int y, uint32_t color, std::string str) @@ -49,8 +49,9 @@ namespace mlx } auto text_ptr = TextLibrary::get().getTextData(res.first->id); - if(*_font_in_use != text_ptr->getFontInUse()) + if(_font_in_use != text_ptr->getFontInUse()) { + // TODO : update text vertex buffers rather than destroying it and recreating it TextLibrary::get().removeTextFromLibrary(res.first->id); const_cast(*res.first).init(_font_in_use); } @@ -61,6 +62,5 @@ namespace mlx { MLX_PROFILE_FUNCTION(); _text_descriptors.clear(); - _font_set.clear(); } } diff --git a/MacroLibX/src/renderer/texts/text_manager.h b/MacroLibX/src/renderer/texts/text_manager.h index 93cfedb..8198b66 100644 --- a/MacroLibX/src/renderer/texts/text_manager.h +++ b/MacroLibX/src/renderer/texts/text_manager.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/06 16:24:11 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:18:42 by maldavid ### ########.fr */ +/* Updated: 2024/01/18 13:52:01 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,9 +19,12 @@ #include #include #include +#include #include #include #include +#include +#include namespace mlx { @@ -40,8 +43,7 @@ namespace mlx private: std::unordered_set _text_descriptors; - std::unordered_set _font_set; - Font* _font_in_use = nullptr; + FontID _font_in_use = nullfont; }; } diff --git a/MacroLibX/third_party/glm/common.hpp b/MacroLibX/third_party/glm/common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_features.hpp b/MacroLibX/third_party/glm/detail/_features.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_fixes.hpp b/MacroLibX/third_party/glm/detail/_fixes.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_noise.hpp b/MacroLibX/third_party/glm/detail/_noise.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_swizzle.hpp b/MacroLibX/third_party/glm/detail/_swizzle.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_swizzle_func.hpp b/MacroLibX/third_party/glm/detail/_swizzle_func.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/_vectorize.hpp b/MacroLibX/third_party/glm/detail/_vectorize.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/compute_common.hpp b/MacroLibX/third_party/glm/detail/compute_common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/compute_vector_relational.hpp b/MacroLibX/third_party/glm/detail/compute_vector_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_common.inl b/MacroLibX/third_party/glm/detail/func_common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_common_simd.inl b/MacroLibX/third_party/glm/detail/func_common_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_exponential.inl b/MacroLibX/third_party/glm/detail/func_exponential.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_exponential_simd.inl b/MacroLibX/third_party/glm/detail/func_exponential_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_geometric.inl b/MacroLibX/third_party/glm/detail/func_geometric.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_geometric_simd.inl b/MacroLibX/third_party/glm/detail/func_geometric_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_integer.inl b/MacroLibX/third_party/glm/detail/func_integer.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_integer_simd.inl b/MacroLibX/third_party/glm/detail/func_integer_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_matrix.inl b/MacroLibX/third_party/glm/detail/func_matrix.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_matrix_simd.inl b/MacroLibX/third_party/glm/detail/func_matrix_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_packing.inl b/MacroLibX/third_party/glm/detail/func_packing.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_packing_simd.inl b/MacroLibX/third_party/glm/detail/func_packing_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_trigonometric.inl b/MacroLibX/third_party/glm/detail/func_trigonometric.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_trigonometric_simd.inl b/MacroLibX/third_party/glm/detail/func_trigonometric_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_vector_relational.inl b/MacroLibX/third_party/glm/detail/func_vector_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/func_vector_relational_simd.inl b/MacroLibX/third_party/glm/detail/func_vector_relational_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/glm.cpp b/MacroLibX/third_party/glm/detail/glm.cpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/qualifier.hpp b/MacroLibX/third_party/glm/detail/qualifier.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/setup.hpp b/MacroLibX/third_party/glm/detail/setup.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_float.hpp b/MacroLibX/third_party/glm/detail/type_float.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_half.hpp b/MacroLibX/third_party/glm/detail/type_half.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_half.inl b/MacroLibX/third_party/glm/detail/type_half.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x2.hpp b/MacroLibX/third_party/glm/detail/type_mat2x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x2.inl b/MacroLibX/third_party/glm/detail/type_mat2x2.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x3.hpp b/MacroLibX/third_party/glm/detail/type_mat2x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x3.inl b/MacroLibX/third_party/glm/detail/type_mat2x3.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x4.hpp b/MacroLibX/third_party/glm/detail/type_mat2x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat2x4.inl b/MacroLibX/third_party/glm/detail/type_mat2x4.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x2.hpp b/MacroLibX/third_party/glm/detail/type_mat3x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x2.inl b/MacroLibX/third_party/glm/detail/type_mat3x2.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x3.hpp b/MacroLibX/third_party/glm/detail/type_mat3x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x3.inl b/MacroLibX/third_party/glm/detail/type_mat3x3.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x4.hpp b/MacroLibX/third_party/glm/detail/type_mat3x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat3x4.inl b/MacroLibX/third_party/glm/detail/type_mat3x4.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x2.hpp b/MacroLibX/third_party/glm/detail/type_mat4x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x2.inl b/MacroLibX/third_party/glm/detail/type_mat4x2.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x3.hpp b/MacroLibX/third_party/glm/detail/type_mat4x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x3.inl b/MacroLibX/third_party/glm/detail/type_mat4x3.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x4.hpp b/MacroLibX/third_party/glm/detail/type_mat4x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x4.inl b/MacroLibX/third_party/glm/detail/type_mat4x4.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_mat4x4_simd.inl b/MacroLibX/third_party/glm/detail/type_mat4x4_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_quat.hpp b/MacroLibX/third_party/glm/detail/type_quat.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_quat.inl b/MacroLibX/third_party/glm/detail/type_quat.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_quat_simd.inl b/MacroLibX/third_party/glm/detail/type_quat_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec1.hpp b/MacroLibX/third_party/glm/detail/type_vec1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec1.inl b/MacroLibX/third_party/glm/detail/type_vec1.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec2.hpp b/MacroLibX/third_party/glm/detail/type_vec2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec2.inl b/MacroLibX/third_party/glm/detail/type_vec2.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec3.hpp b/MacroLibX/third_party/glm/detail/type_vec3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec3.inl b/MacroLibX/third_party/glm/detail/type_vec3.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec4.hpp b/MacroLibX/third_party/glm/detail/type_vec4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec4.inl b/MacroLibX/third_party/glm/detail/type_vec4.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/detail/type_vec4_simd.inl b/MacroLibX/third_party/glm/detail/type_vec4_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/exponential.hpp b/MacroLibX/third_party/glm/exponential.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext.hpp b/MacroLibX/third_party/glm/ext.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_clip_space.hpp b/MacroLibX/third_party/glm/ext/matrix_clip_space.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_clip_space.inl b/MacroLibX/third_party/glm/ext/matrix_clip_space.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_common.hpp b/MacroLibX/third_party/glm/ext/matrix_common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_common.inl b/MacroLibX/third_party/glm/ext/matrix_common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x2.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x3.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x4.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double2x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double2x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x2.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x3.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x4.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double3x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double3x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x2.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x3.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x4.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_double4x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_double4x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x2.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x3.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x4.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float2x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float2x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x2.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x3.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x4.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float3x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float3x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x2.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x2_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x3.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x3_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x4.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_float4x4_precision.hpp b/MacroLibX/third_party/glm/ext/matrix_float4x4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_projection.hpp b/MacroLibX/third_party/glm/ext/matrix_projection.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_projection.inl b/MacroLibX/third_party/glm/ext/matrix_projection.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_relational.hpp b/MacroLibX/third_party/glm/ext/matrix_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_relational.inl b/MacroLibX/third_party/glm/ext/matrix_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_transform.hpp b/MacroLibX/third_party/glm/ext/matrix_transform.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/matrix_transform.inl b/MacroLibX/third_party/glm/ext/matrix_transform.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_common.hpp b/MacroLibX/third_party/glm/ext/quaternion_common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_common.inl b/MacroLibX/third_party/glm/ext/quaternion_common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_common_simd.inl b/MacroLibX/third_party/glm/ext/quaternion_common_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_double.hpp b/MacroLibX/third_party/glm/ext/quaternion_double.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_double_precision.hpp b/MacroLibX/third_party/glm/ext/quaternion_double_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_exponential.hpp b/MacroLibX/third_party/glm/ext/quaternion_exponential.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_exponential.inl b/MacroLibX/third_party/glm/ext/quaternion_exponential.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_float.hpp b/MacroLibX/third_party/glm/ext/quaternion_float.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_float_precision.hpp b/MacroLibX/third_party/glm/ext/quaternion_float_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_geometric.hpp b/MacroLibX/third_party/glm/ext/quaternion_geometric.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_geometric.inl b/MacroLibX/third_party/glm/ext/quaternion_geometric.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_relational.hpp b/MacroLibX/third_party/glm/ext/quaternion_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_relational.inl b/MacroLibX/third_party/glm/ext/quaternion_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_transform.hpp b/MacroLibX/third_party/glm/ext/quaternion_transform.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_transform.inl b/MacroLibX/third_party/glm/ext/quaternion_transform.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_trigonometric.hpp b/MacroLibX/third_party/glm/ext/quaternion_trigonometric.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/quaternion_trigonometric.inl b/MacroLibX/third_party/glm/ext/quaternion_trigonometric.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_common.hpp b/MacroLibX/third_party/glm/ext/scalar_common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_common.inl b/MacroLibX/third_party/glm/ext/scalar_common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_constants.hpp b/MacroLibX/third_party/glm/ext/scalar_constants.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_constants.inl b/MacroLibX/third_party/glm/ext/scalar_constants.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_int_sized.hpp b/MacroLibX/third_party/glm/ext/scalar_int_sized.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_integer.hpp b/MacroLibX/third_party/glm/ext/scalar_integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_integer.inl b/MacroLibX/third_party/glm/ext/scalar_integer.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_relational.hpp b/MacroLibX/third_party/glm/ext/scalar_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_relational.inl b/MacroLibX/third_party/glm/ext/scalar_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_uint_sized.hpp b/MacroLibX/third_party/glm/ext/scalar_uint_sized.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_ulp.hpp b/MacroLibX/third_party/glm/ext/scalar_ulp.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/scalar_ulp.inl b/MacroLibX/third_party/glm/ext/scalar_ulp.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool1.hpp b/MacroLibX/third_party/glm/ext/vector_bool1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool1_precision.hpp b/MacroLibX/third_party/glm/ext/vector_bool1_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool2.hpp b/MacroLibX/third_party/glm/ext/vector_bool2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool2_precision.hpp b/MacroLibX/third_party/glm/ext/vector_bool2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool3.hpp b/MacroLibX/third_party/glm/ext/vector_bool3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool3_precision.hpp b/MacroLibX/third_party/glm/ext/vector_bool3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool4.hpp b/MacroLibX/third_party/glm/ext/vector_bool4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_bool4_precision.hpp b/MacroLibX/third_party/glm/ext/vector_bool4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_common.hpp b/MacroLibX/third_party/glm/ext/vector_common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_common.inl b/MacroLibX/third_party/glm/ext/vector_common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double1.hpp b/MacroLibX/third_party/glm/ext/vector_double1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double1_precision.hpp b/MacroLibX/third_party/glm/ext/vector_double1_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double2.hpp b/MacroLibX/third_party/glm/ext/vector_double2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double2_precision.hpp b/MacroLibX/third_party/glm/ext/vector_double2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double3.hpp b/MacroLibX/third_party/glm/ext/vector_double3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double3_precision.hpp b/MacroLibX/third_party/glm/ext/vector_double3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double4.hpp b/MacroLibX/third_party/glm/ext/vector_double4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_double4_precision.hpp b/MacroLibX/third_party/glm/ext/vector_double4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float1.hpp b/MacroLibX/third_party/glm/ext/vector_float1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float1_precision.hpp b/MacroLibX/third_party/glm/ext/vector_float1_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float2.hpp b/MacroLibX/third_party/glm/ext/vector_float2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float2_precision.hpp b/MacroLibX/third_party/glm/ext/vector_float2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float3.hpp b/MacroLibX/third_party/glm/ext/vector_float3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float3_precision.hpp b/MacroLibX/third_party/glm/ext/vector_float3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float4.hpp b/MacroLibX/third_party/glm/ext/vector_float4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_float4_precision.hpp b/MacroLibX/third_party/glm/ext/vector_float4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int1.hpp b/MacroLibX/third_party/glm/ext/vector_int1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int1_precision.hpp b/MacroLibX/third_party/glm/ext/vector_int1_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int2.hpp b/MacroLibX/third_party/glm/ext/vector_int2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int2_precision.hpp b/MacroLibX/third_party/glm/ext/vector_int2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int3.hpp b/MacroLibX/third_party/glm/ext/vector_int3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int3_precision.hpp b/MacroLibX/third_party/glm/ext/vector_int3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int4.hpp b/MacroLibX/third_party/glm/ext/vector_int4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_int4_precision.hpp b/MacroLibX/third_party/glm/ext/vector_int4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_integer.hpp b/MacroLibX/third_party/glm/ext/vector_integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_integer.inl b/MacroLibX/third_party/glm/ext/vector_integer.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_relational.hpp b/MacroLibX/third_party/glm/ext/vector_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_relational.inl b/MacroLibX/third_party/glm/ext/vector_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint1.hpp b/MacroLibX/third_party/glm/ext/vector_uint1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint1_precision.hpp b/MacroLibX/third_party/glm/ext/vector_uint1_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint2.hpp b/MacroLibX/third_party/glm/ext/vector_uint2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint2_precision.hpp b/MacroLibX/third_party/glm/ext/vector_uint2_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint3.hpp b/MacroLibX/third_party/glm/ext/vector_uint3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint3_precision.hpp b/MacroLibX/third_party/glm/ext/vector_uint3_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint4.hpp b/MacroLibX/third_party/glm/ext/vector_uint4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_uint4_precision.hpp b/MacroLibX/third_party/glm/ext/vector_uint4_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_ulp.hpp b/MacroLibX/third_party/glm/ext/vector_ulp.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/ext/vector_ulp.inl b/MacroLibX/third_party/glm/ext/vector_ulp.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/fwd.hpp b/MacroLibX/third_party/glm/fwd.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/geometric.hpp b/MacroLibX/third_party/glm/geometric.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/glm.hpp b/MacroLibX/third_party/glm/glm.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/bitfield.hpp b/MacroLibX/third_party/glm/gtc/bitfield.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/bitfield.inl b/MacroLibX/third_party/glm/gtc/bitfield.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/color_space.hpp b/MacroLibX/third_party/glm/gtc/color_space.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/color_space.inl b/MacroLibX/third_party/glm/gtc/color_space.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/constants.hpp b/MacroLibX/third_party/glm/gtc/constants.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/constants.inl b/MacroLibX/third_party/glm/gtc/constants.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/epsilon.hpp b/MacroLibX/third_party/glm/gtc/epsilon.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/epsilon.inl b/MacroLibX/third_party/glm/gtc/epsilon.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/integer.hpp b/MacroLibX/third_party/glm/gtc/integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/integer.inl b/MacroLibX/third_party/glm/gtc/integer.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_access.hpp b/MacroLibX/third_party/glm/gtc/matrix_access.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_access.inl b/MacroLibX/third_party/glm/gtc/matrix_access.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_integer.hpp b/MacroLibX/third_party/glm/gtc/matrix_integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_inverse.hpp b/MacroLibX/third_party/glm/gtc/matrix_inverse.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_inverse.inl b/MacroLibX/third_party/glm/gtc/matrix_inverse.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_transform.hpp b/MacroLibX/third_party/glm/gtc/matrix_transform.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/matrix_transform.inl b/MacroLibX/third_party/glm/gtc/matrix_transform.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/noise.hpp b/MacroLibX/third_party/glm/gtc/noise.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/noise.inl b/MacroLibX/third_party/glm/gtc/noise.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/packing.hpp b/MacroLibX/third_party/glm/gtc/packing.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/packing.inl b/MacroLibX/third_party/glm/gtc/packing.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/quaternion.hpp b/MacroLibX/third_party/glm/gtc/quaternion.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/quaternion.inl b/MacroLibX/third_party/glm/gtc/quaternion.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/quaternion_simd.inl b/MacroLibX/third_party/glm/gtc/quaternion_simd.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/random.hpp b/MacroLibX/third_party/glm/gtc/random.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/random.inl b/MacroLibX/third_party/glm/gtc/random.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/reciprocal.hpp b/MacroLibX/third_party/glm/gtc/reciprocal.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/reciprocal.inl b/MacroLibX/third_party/glm/gtc/reciprocal.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/round.hpp b/MacroLibX/third_party/glm/gtc/round.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/round.inl b/MacroLibX/third_party/glm/gtc/round.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/type_aligned.hpp b/MacroLibX/third_party/glm/gtc/type_aligned.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/type_precision.hpp b/MacroLibX/third_party/glm/gtc/type_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/type_precision.inl b/MacroLibX/third_party/glm/gtc/type_precision.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/type_ptr.hpp b/MacroLibX/third_party/glm/gtc/type_ptr.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/type_ptr.inl b/MacroLibX/third_party/glm/gtc/type_ptr.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/ulp.hpp b/MacroLibX/third_party/glm/gtc/ulp.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/ulp.inl b/MacroLibX/third_party/glm/gtc/ulp.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtc/vec1.hpp b/MacroLibX/third_party/glm/gtc/vec1.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/associated_min_max.hpp b/MacroLibX/third_party/glm/gtx/associated_min_max.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/associated_min_max.inl b/MacroLibX/third_party/glm/gtx/associated_min_max.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/bit.hpp b/MacroLibX/third_party/glm/gtx/bit.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/bit.inl b/MacroLibX/third_party/glm/gtx/bit.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/closest_point.hpp b/MacroLibX/third_party/glm/gtx/closest_point.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/closest_point.inl b/MacroLibX/third_party/glm/gtx/closest_point.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_encoding.hpp b/MacroLibX/third_party/glm/gtx/color_encoding.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_encoding.inl b/MacroLibX/third_party/glm/gtx/color_encoding.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_space.hpp b/MacroLibX/third_party/glm/gtx/color_space.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_space.inl b/MacroLibX/third_party/glm/gtx/color_space.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_space_YCoCg.hpp b/MacroLibX/third_party/glm/gtx/color_space_YCoCg.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/color_space_YCoCg.inl b/MacroLibX/third_party/glm/gtx/color_space_YCoCg.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/common.hpp b/MacroLibX/third_party/glm/gtx/common.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/common.inl b/MacroLibX/third_party/glm/gtx/common.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/compatibility.hpp b/MacroLibX/third_party/glm/gtx/compatibility.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/compatibility.inl b/MacroLibX/third_party/glm/gtx/compatibility.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/component_wise.hpp b/MacroLibX/third_party/glm/gtx/component_wise.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/component_wise.inl b/MacroLibX/third_party/glm/gtx/component_wise.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/dual_quaternion.hpp b/MacroLibX/third_party/glm/gtx/dual_quaternion.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/dual_quaternion.inl b/MacroLibX/third_party/glm/gtx/dual_quaternion.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/easing.hpp b/MacroLibX/third_party/glm/gtx/easing.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/easing.inl b/MacroLibX/third_party/glm/gtx/easing.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/euler_angles.hpp b/MacroLibX/third_party/glm/gtx/euler_angles.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/euler_angles.inl b/MacroLibX/third_party/glm/gtx/euler_angles.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/extend.hpp b/MacroLibX/third_party/glm/gtx/extend.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/extend.inl b/MacroLibX/third_party/glm/gtx/extend.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/extended_min_max.hpp b/MacroLibX/third_party/glm/gtx/extended_min_max.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/extended_min_max.inl b/MacroLibX/third_party/glm/gtx/extended_min_max.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/exterior_product.hpp b/MacroLibX/third_party/glm/gtx/exterior_product.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/exterior_product.inl b/MacroLibX/third_party/glm/gtx/exterior_product.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_exponential.hpp b/MacroLibX/third_party/glm/gtx/fast_exponential.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_exponential.inl b/MacroLibX/third_party/glm/gtx/fast_exponential.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_square_root.hpp b/MacroLibX/third_party/glm/gtx/fast_square_root.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_square_root.inl b/MacroLibX/third_party/glm/gtx/fast_square_root.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_trigonometry.hpp b/MacroLibX/third_party/glm/gtx/fast_trigonometry.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/fast_trigonometry.inl b/MacroLibX/third_party/glm/gtx/fast_trigonometry.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/float_notmalize.inl b/MacroLibX/third_party/glm/gtx/float_notmalize.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/functions.hpp b/MacroLibX/third_party/glm/gtx/functions.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/functions.inl b/MacroLibX/third_party/glm/gtx/functions.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/gradient_paint.hpp b/MacroLibX/third_party/glm/gtx/gradient_paint.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/gradient_paint.inl b/MacroLibX/third_party/glm/gtx/gradient_paint.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/handed_coordinate_space.hpp b/MacroLibX/third_party/glm/gtx/handed_coordinate_space.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/handed_coordinate_space.inl b/MacroLibX/third_party/glm/gtx/handed_coordinate_space.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/hash.hpp b/MacroLibX/third_party/glm/gtx/hash.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/hash.inl b/MacroLibX/third_party/glm/gtx/hash.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/integer.hpp b/MacroLibX/third_party/glm/gtx/integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/integer.inl b/MacroLibX/third_party/glm/gtx/integer.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/intersect.hpp b/MacroLibX/third_party/glm/gtx/intersect.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/intersect.inl b/MacroLibX/third_party/glm/gtx/intersect.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/io.hpp b/MacroLibX/third_party/glm/gtx/io.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/io.inl b/MacroLibX/third_party/glm/gtx/io.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/log_base.hpp b/MacroLibX/third_party/glm/gtx/log_base.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/log_base.inl b/MacroLibX/third_party/glm/gtx/log_base.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_cross_product.hpp b/MacroLibX/third_party/glm/gtx/matrix_cross_product.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_cross_product.inl b/MacroLibX/third_party/glm/gtx/matrix_cross_product.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_decompose.hpp b/MacroLibX/third_party/glm/gtx/matrix_decompose.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_decompose.inl b/MacroLibX/third_party/glm/gtx/matrix_decompose.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_factorisation.hpp b/MacroLibX/third_party/glm/gtx/matrix_factorisation.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_factorisation.inl b/MacroLibX/third_party/glm/gtx/matrix_factorisation.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_interpolation.hpp b/MacroLibX/third_party/glm/gtx/matrix_interpolation.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_interpolation.inl b/MacroLibX/third_party/glm/gtx/matrix_interpolation.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_major_storage.hpp b/MacroLibX/third_party/glm/gtx/matrix_major_storage.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_major_storage.inl b/MacroLibX/third_party/glm/gtx/matrix_major_storage.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_operation.hpp b/MacroLibX/third_party/glm/gtx/matrix_operation.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_operation.inl b/MacroLibX/third_party/glm/gtx/matrix_operation.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_query.hpp b/MacroLibX/third_party/glm/gtx/matrix_query.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_query.inl b/MacroLibX/third_party/glm/gtx/matrix_query.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_transform_2d.hpp b/MacroLibX/third_party/glm/gtx/matrix_transform_2d.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/matrix_transform_2d.inl b/MacroLibX/third_party/glm/gtx/matrix_transform_2d.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/mixed_product.hpp b/MacroLibX/third_party/glm/gtx/mixed_product.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/mixed_product.inl b/MacroLibX/third_party/glm/gtx/mixed_product.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/norm.hpp b/MacroLibX/third_party/glm/gtx/norm.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/norm.inl b/MacroLibX/third_party/glm/gtx/norm.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/normal.hpp b/MacroLibX/third_party/glm/gtx/normal.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/normal.inl b/MacroLibX/third_party/glm/gtx/normal.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/normalize_dot.hpp b/MacroLibX/third_party/glm/gtx/normalize_dot.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/normalize_dot.inl b/MacroLibX/third_party/glm/gtx/normalize_dot.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/number_precision.hpp b/MacroLibX/third_party/glm/gtx/number_precision.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/number_precision.inl b/MacroLibX/third_party/glm/gtx/number_precision.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/optimum_pow.hpp b/MacroLibX/third_party/glm/gtx/optimum_pow.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/optimum_pow.inl b/MacroLibX/third_party/glm/gtx/optimum_pow.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/orthonormalize.hpp b/MacroLibX/third_party/glm/gtx/orthonormalize.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/orthonormalize.inl b/MacroLibX/third_party/glm/gtx/orthonormalize.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/perpendicular.hpp b/MacroLibX/third_party/glm/gtx/perpendicular.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/perpendicular.inl b/MacroLibX/third_party/glm/gtx/perpendicular.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/polar_coordinates.hpp b/MacroLibX/third_party/glm/gtx/polar_coordinates.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/polar_coordinates.inl b/MacroLibX/third_party/glm/gtx/polar_coordinates.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/projection.hpp b/MacroLibX/third_party/glm/gtx/projection.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/projection.inl b/MacroLibX/third_party/glm/gtx/projection.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/quaternion.hpp b/MacroLibX/third_party/glm/gtx/quaternion.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/quaternion.inl b/MacroLibX/third_party/glm/gtx/quaternion.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/range.hpp b/MacroLibX/third_party/glm/gtx/range.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/raw_data.hpp b/MacroLibX/third_party/glm/gtx/raw_data.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/raw_data.inl b/MacroLibX/third_party/glm/gtx/raw_data.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/rotate_normalized_axis.hpp b/MacroLibX/third_party/glm/gtx/rotate_normalized_axis.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/rotate_normalized_axis.inl b/MacroLibX/third_party/glm/gtx/rotate_normalized_axis.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/rotate_vector.hpp b/MacroLibX/third_party/glm/gtx/rotate_vector.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/rotate_vector.inl b/MacroLibX/third_party/glm/gtx/rotate_vector.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/scalar_multiplication.hpp b/MacroLibX/third_party/glm/gtx/scalar_multiplication.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/scalar_relational.hpp b/MacroLibX/third_party/glm/gtx/scalar_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/scalar_relational.inl b/MacroLibX/third_party/glm/gtx/scalar_relational.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/spline.hpp b/MacroLibX/third_party/glm/gtx/spline.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/spline.inl b/MacroLibX/third_party/glm/gtx/spline.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/std_based_type.hpp b/MacroLibX/third_party/glm/gtx/std_based_type.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/std_based_type.inl b/MacroLibX/third_party/glm/gtx/std_based_type.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/string_cast.hpp b/MacroLibX/third_party/glm/gtx/string_cast.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/string_cast.inl b/MacroLibX/third_party/glm/gtx/string_cast.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/texture.hpp b/MacroLibX/third_party/glm/gtx/texture.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/texture.inl b/MacroLibX/third_party/glm/gtx/texture.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/transform.hpp b/MacroLibX/third_party/glm/gtx/transform.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/transform.inl b/MacroLibX/third_party/glm/gtx/transform.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/transform2.hpp b/MacroLibX/third_party/glm/gtx/transform2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/transform2.inl b/MacroLibX/third_party/glm/gtx/transform2.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/type_aligned.hpp b/MacroLibX/third_party/glm/gtx/type_aligned.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/type_aligned.inl b/MacroLibX/third_party/glm/gtx/type_aligned.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/type_trait.hpp b/MacroLibX/third_party/glm/gtx/type_trait.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/type_trait.inl b/MacroLibX/third_party/glm/gtx/type_trait.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/vec_swizzle.hpp b/MacroLibX/third_party/glm/gtx/vec_swizzle.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/vector_angle.hpp b/MacroLibX/third_party/glm/gtx/vector_angle.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/vector_angle.inl b/MacroLibX/third_party/glm/gtx/vector_angle.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/vector_query.hpp b/MacroLibX/third_party/glm/gtx/vector_query.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/vector_query.inl b/MacroLibX/third_party/glm/gtx/vector_query.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/wrap.hpp b/MacroLibX/third_party/glm/gtx/wrap.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/gtx/wrap.inl b/MacroLibX/third_party/glm/gtx/wrap.inl old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/integer.hpp b/MacroLibX/third_party/glm/integer.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat2x2.hpp b/MacroLibX/third_party/glm/mat2x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat2x3.hpp b/MacroLibX/third_party/glm/mat2x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat2x4.hpp b/MacroLibX/third_party/glm/mat2x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat3x2.hpp b/MacroLibX/third_party/glm/mat3x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat3x3.hpp b/MacroLibX/third_party/glm/mat3x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat3x4.hpp b/MacroLibX/third_party/glm/mat3x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat4x2.hpp b/MacroLibX/third_party/glm/mat4x2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat4x3.hpp b/MacroLibX/third_party/glm/mat4x3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/mat4x4.hpp b/MacroLibX/third_party/glm/mat4x4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/matrix.hpp b/MacroLibX/third_party/glm/matrix.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/packing.hpp b/MacroLibX/third_party/glm/packing.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/common.h b/MacroLibX/third_party/glm/simd/common.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/exponential.h b/MacroLibX/third_party/glm/simd/exponential.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/geometric.h b/MacroLibX/third_party/glm/simd/geometric.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/integer.h b/MacroLibX/third_party/glm/simd/integer.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/matrix.h b/MacroLibX/third_party/glm/simd/matrix.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/neon.h b/MacroLibX/third_party/glm/simd/neon.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/packing.h b/MacroLibX/third_party/glm/simd/packing.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/platform.h b/MacroLibX/third_party/glm/simd/platform.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/trigonometric.h b/MacroLibX/third_party/glm/simd/trigonometric.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/simd/vector_relational.h b/MacroLibX/third_party/glm/simd/vector_relational.h old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/trigonometric.hpp b/MacroLibX/third_party/glm/trigonometric.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/vec2.hpp b/MacroLibX/third_party/glm/vec2.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/vec3.hpp b/MacroLibX/third_party/glm/vec3.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/vec4.hpp b/MacroLibX/third_party/glm/vec4.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/third_party/glm/vector_relational.hpp b/MacroLibX/third_party/glm/vector_relational.hpp old mode 100644 new mode 100755 diff --git a/MacroLibX/valgrind.supp b/MacroLibX/valgrind.supp index d746267..04fc934 100644 --- a/MacroLibX/valgrind.supp +++ b/MacroLibX/valgrind.supp @@ -1,7 +1,31 @@ { name Memcheck:Leak - fun:*alloc + fun:* + ... + obj:*libmlx* + ... +} +{ + name + Memcheck:Cond + fun:* + ... + obj:*libmlx* + ... +} +{ + name + Memcheck:Value8 + fun:* + ... + obj:*libmlx* + ... +} +{ + name + Memcheck:Addr4 + fun:* ... obj:*libmlx* ... @@ -9,7 +33,7 @@ { name Memcheck:Leak - fun:*alloc + fun:* ... obj:*SDL* ... @@ -17,7 +41,7 @@ { name Memcheck:Leak - fun:*alloc + fun:* ... obj:*X11* ... @@ -25,7 +49,7 @@ { name Memcheck:Leak - fun:*alloc + fun:* ... obj:*nvidia.so* ... @@ -33,7 +57,7 @@ { name Memcheck:Leak - fun:*alloc + fun:* obj:* ... fun:X11* @@ -51,7 +75,16 @@ { name Memcheck:Leak - fun:*alloc + fun:* + obj:* + ... + fun:_dl_* + ... +} +{ + name + Memcheck:Leak + fun:* obj:* ... fun:dl_* @@ -66,32 +99,3 @@ fun:dl_* ... } -{ - name - Memcheck:Leak - fun:calloc - obj:* -} -{ - name - Memcheck:Leak - fun:realloc - obj:* -} -{ - name - Memcheck:Leak - fun:malloc - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* - obj:* -} - diff --git a/Makefile b/Makefile index e9571d3..d7acac5 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: adjoly +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/11/01 11:03:22 by adjoly #+# #+# # -# Updated: 2024/01/13 19:09:13 by adjoly ### ########.fr # +# Updated: 2024/01/19 13:41:58 by adjoly ### ########.fr # # # # **************************************************************************** # @@ -17,7 +17,8 @@ CC = cc SRCS = main.c \ get_map.c \ ft_move_character.c \ - print_map.c + print_map.c \ + ft_check_map_error.c OBJS = $(SRCS:.c=.o) diff --git a/ft_check_map_error.c b/ft_check_map_error.c new file mode 100644 index 0000000..d713a53 --- /dev/null +++ b/ft_check_map_error.c @@ -0,0 +1,85 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_check_map_error.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/01/17 10:17:52 by adjoly #+# #+# */ +/* Updated: 2024/01/18 13:51:13 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft/libft.h" +#include "printf/ft_printf.h" +#include "so_long.h" +#include +#include + +char ft_check_charset(char c, char *charset) +{ + while (*charset) + { + if (c != *charset) + return (1); + charset++; + } + return (0); +} + +char ft_valid_char(char **map) +{ + size_t y; + size_t x; + + y = 0; + while (map[y]) + { + x = 0; + while (map[y][x]) + { + if (ft_check_charset(map[y][x], "01CEP") == 0) + return (1); + x++; + } + y++; + } + return (0); +} + +/*char ft_floodfill(char **map) +{ + while (expression) + { + + } + // partir dans toutes les direction a partir du P et sur tout les point suivant +}*/ + +char ft_valid_file_ext(char *file_name) +{ + unsigned short file_len; + + file_len = ft_strlen(file_name) - 1; + if (file_name[file_len] == 'r' && file_name[file_len - 1] == 'e' \ + && file_name[file_len - 2] == 'b' && file_name[file_len - 3] == '.') + return (0); + return (1); +} + +void ft_send_error(char *msg, char **map) +{ + ft_putstr_fd("Error\n", 1); + ft_putstr_fd(msg, 1); + if (map) + ft_freemap(map); + exit(EXIT_SUCCESS); +} + +void ft_check_map_error(char **map) +{ + if (ft_valid_char(map) == 1) + ft_send_error("Invalid character in map\n", map); + // else if (ft_floodfill(map) == 1) + // ft_send_error("Map is not finishable\n", map); +} diff --git a/ft_check_map_error.o b/ft_check_map_error.o new file mode 100644 index 0000000000000000000000000000000000000000..07e85deb96f08b94f01ab451ef1848e72da0f567 GIT binary patch literal 4976 zcmbtXU5p!76}~g$JNDYU9w%Gcrh&vkNn4ffcpX3?U8ix?dh0k@iVA@MZ5^*Y{-NIS zVvo~J)rD1^MP2qKixjCvApXP?2&qC!t5z(F8l~w=Tk!&-4_zJ*S%IQO1+)?fbIzS} z?eW9`B#tz`_k8Df&Yb(>uV+q8tBS%TDeOVk=OoJ5q|u+J#Wc-!f#&J#${*4%?7Wcq zS9Ybnon6grFMWy`7bZZ(SO;)*X4_aFIeN{wFaprkOjp_Z5KK@p+u2aEE1B)BtKDuF zBxulm@{O`-?7tu)82i)0f41}Icy?uRJNstlItqmG>df_QCv^>CJ%`Ynnau&wYTz2g z-dswBK;wkhh$Pu{)JHPbQz7BkSl{UEFk`uw>D?fOV4IZb=GJ#1Qve{cNd5ZOS3Rj` zJ6Ga^=|92-^Iu)uc3+@#T`8|*Zs3a;ugu&q)&rr=PSaTak{eKfoh>C>e9IMC#`5t2 zk=hf@8p{UkY_J^99D^5M*9Sf<%*G{fwKeXdZi zmEy%}p;;(8Rx@6+<8y`iFjICZhoa+Li^lHQ8{MVs))`Yx0C(%@JGJNok*UZ%drpiW z-@};3nM%+Jh#dID0L%SGXrdovTJ*t4B*IwGU}zP(9R}AgB>x4d304wtu}DV6-2anP zAtwnw4in|`$SLEKV5F&QUmM`&UG4}v>{-2x`mWVJvU2tIr7#6`ttzbI54qe~!5u)Z z@8jFRkdLVWA5$0$eAvS3*k{p-;~Z%Q9Od(-{P^J#bZJT zJ`NOB31avl`UssuQy|q8vS7#^RCao{Z9DCFv0kt%@pD$QRcqMsh zWjPE-L`9#0Q!iJp)vdg>;Gn!^*(Enp-$ySvD+)j84={F~VXS!DZq+KbRf3*%SgZD| zm3Pd=NGdz;xx_*-1rN71xr1-%yH*@?*jvq|% zl*2Xs7)Z-JCfw^OzR%%@QvBXBKb+%JIeu@7rybCk;#!rfYa+nkxElU|8=+(36?Of4 z`WZ;L0={y9e37#s^4r3%gAw?Ao`cT>2^Ia1st#WPtM?!1?;s1XzjTMGX#G8BK&;VT zIRFBq_4keek;b4whmgj`ZbCl^NbDxm?YrHce8d_6J={wXk5NmA{se3po?(8rZh_ax z&juAttO3A&a0~rsNdGL1NMg;wco#gFPn`USwFcPh@E{?qiJALzjplgzV3qy}7Z0Q) z*&~islK8I)mwv=H3-V2mKAdtr{TsKyRjL>I4}0|G(n37w!4G)!qaOSS;W8ijMbjRA zJWXZ(GGB~|F(klMhyRKA_h^*kCP~*Cm%_AJ8aqjr8RPCGic?80j#6KKmnD)* zT-NhDK3vv8_7A4zjT?%NjYh&jW|pkkb|qh!oo!m@nAx=I1=FFck9#%hU53nJV-7D> z%vz|4tC4#XlNT!T)N;hN%6Ch<`6e}Z?7&~fbhSEm;7fN{*CwU zr&9MK{+|PK|JS%@BD#_%GT!@;a9v^i!-DJoe3Rnd(}%=N=I(;qlT6ISu*(N>+~dgV8Yi zi*%U%xBC5r?7gvZ{)+c7^ay2K3E{pE*gUknb<~-@#;9{i@Wz3#5qk zi@+o8W&gYlm_H{pnWu(+$tU!&>@Cn87JrlC%QzSxA%A?lUumbhxGgTh)1w`-$GZ#? Z+9Ubnj|1SZ9qPp>&=MKofWG|k{|&A$yNdt- literal 0 HcmV?d00001 diff --git a/ft_lstclear_img.c b/ft_lstclear_img.c new file mode 100644 index 0000000..c5fa2bf --- /dev/null +++ b/ft_lstclear_img.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear_img.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/11 18:05:14 by adjoly #+# #+# */ +/* Updated: 2024/01/14 15:18:13 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "so_long.h" + +void ft_lstdelone_img(t_list *lst, void *param, void (*del)(void *, void *)) +{ + + if (lst == NULL || del == NULL) + return ; + del(lst->content, param); + free(lst); +} + +void ft_lstclear_img(t_list **lst, void *param, void (*del)(void *, void *)) +{ + t_list *tmp; + + tmp = NULL; + while (lst && *lst && del) + { + tmp = (*lst)->next; + ft_lstdelone_img((*lst), param, del); + *lst = tmp; + } +} diff --git a/ft_lstclear_img.o b/ft_lstclear_img.o new file mode 100644 index 0000000000000000000000000000000000000000..315e9c8843a02e9ad89e7e457b958e86e9621da9 GIT binary patch literal 3280 zcmbtVU1%It6h1SPJK5|uyPN;U76}wBh@DN04@r$SVppeYt5S$GVBBstvq^M+!tQKL z3-O0U>2{$_)q)RFL_tK*7xBRdB@jjJQ}IE>2OB6tDuNMw2q?sJX3pJgZdMdLF!!GC zJAZfXoqOh`_{m3gO#>+!JOn#PvH&*%JNl@njzSbY$Lz|__R_C?c4cwPu9P?J%Gidz zw73P4)qh#zmVP&0F!*p zKX3?!$nFhbddbEn%Xzolm(Hg0(|z+!u{2xA_YK@<^;-i+28PR?br3RcGFx)fStnIY z&gQ1AG{o|mQf#J>b4sz))N_UGx!CbSx}0>|iH;0@1-}w9J;3gkLjvf*^ zN_aRNeNBI))zlN{;oC-tN1>zIv0w7+-y_uoD=i5h3%s2%>Y_h-glTZu4=`g$NCY62eHJX!#4NuGR2g80<#F6wfH#QUuS6_j>= z^8AUvn{js?PhDFIHE$A`XUK;@eVBxfqkdQK_1L}qQRZcyXBZz>_(jI275;6;XBGZk z##x@_dgOkeSNwB~mla;teO=*Y-FFmT*8N!F-)Fq0@K+gMSNKbezf<^E82_a36~=u$ z)85zb|ER*teK^6q+#iMzFu|H~Cd<>w)Z}E*nFp)rWK)()EzU|8a?~cJN69U+*^ijb zX9{5D3$9~5_QcqclAB6DulAI^oz==_=X1%_)D$-G>0SA0FNH|1F69&Cs7Qk1M;FyvTlXQhf)}pmOB<5tF83R3KRB+i3mY@cOqn zfYwixy8c7Rk&Ap!R6Y5GKkg4D!LzI{XX;ap;wSh}5C2R2F^*T)u(@pT7M2Xtyo!zwT82gVdfcTBDSH;yoK Ae*gdg literal 0 HcmV?d00001 diff --git a/ft_move_character.c b/ft_move_character.c index ba7ac45..14fd6d9 100644 --- a/ft_move_character.c +++ b/ft_move_character.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/07 19:13:01 by adjoly #+# #+# */ -/* Updated: 2024/01/13 18:14:25 by adjoly ### ########.fr */ +/* Updated: 2024/01/19 15:25:00 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,16 @@ #include "printf/ft_printf.h" #include "so_long.h" +void ft_printmapchar(char **map) +{ + while (*map) + { + ft_printf("%s\n", *map); + map++; + } + return ; +} + void ft_move_up(t_window *win) { if (win->map[win->p_coords->y - 1][win->p_coords->x] == 'C') @@ -23,9 +33,7 @@ void ft_move_up(t_window *win) ft_putimg(win->p_coords->x, win->p_coords->y, win, G_PNG); win->map[win->p_coords->y - 1][win->p_coords->x] = '0'; win->p_coords->y = win->p_coords->y - 1; - ft_printf("%d\n", win->c_count); win->c_count--; - ft_printf("%d\n", win->c_count); win->mov_count++; } else if (win->p_coords->y == win->e_coords->y && win->e_coords->x == win->p_coords->x && win->map[win->p_coords->y - 1][win->p_coords->x] != '1') @@ -36,7 +44,11 @@ void ft_move_up(t_window *win) win->mov_count++; } else if (win->map[win->p_coords->y - 1][win->p_coords->x] == 'E' && win->c_count == 0) + { + win->mov_count++; + ft_printf("%d\n", win->c_count); exit(0); + } else if (win->map[win->p_coords->y - 1][win->p_coords->x] != '1') { ft_putimg(win->p_coords->x, win->p_coords->y - 1, win, P_PNG); @@ -54,12 +66,10 @@ void ft_move_down(t_window *win) ft_putimg(win->p_coords->x, win->p_coords->y, win, G_PNG); win->map[win->p_coords->y + 1][win->p_coords->x] = '0'; win->p_coords->y = win->p_coords->y + 1; - ft_printf("%d\n", win->c_count); win->c_count--; - ft_printf("%d\n", win->c_count); win->mov_count++; } - else if (win->p_coords->x == win->e_coords->x && win->p_coords->y == win->e_coords->y && win->map[win->p_coords->y + 1][win->p_coords->x] != '1') + else if (win->p_coords->y == win->e_coords->y && win->e_coords->x == win->p_coords->x && win->map[win->p_coords->y + 1][win->p_coords->x] != '1') { ft_putimg(win->p_coords->x, win->p_coords->y + 1, win, P_PNG); ft_putimg(win->p_coords->x, win->p_coords->y, win, E_PNG); @@ -67,7 +77,11 @@ void ft_move_down(t_window *win) win->mov_count++; } else if (win->map[win->p_coords->y + 1][win->p_coords->x] == 'E' && win->c_count == 0) + { + win->mov_count++; + ft_printf("%d\n", win->c_count); exit(0); + } else if (win->map[win->p_coords->y + 1][win->p_coords->x] != '1') { ft_putimg(win->p_coords->x, win->p_coords->y + 1, win, P_PNG); @@ -85,20 +99,22 @@ void ft_move_left(t_window *win) ft_putimg(win->p_coords->x, win->p_coords->y, win, G_PNG); win->map[win->p_coords->y][win->p_coords->x - 1] = '0'; win->p_coords->x = win->p_coords->x - 1; - ft_printf("%d\n", win->c_count); win->c_count--; - ft_printf("%d\n", win->c_count); win->mov_count++; } - else if (win->p_coords->x == win->e_coords->x && win->e_coords->y == win->p_coords->y && win->map[win->p_coords->y][win->p_coords->x - 1] != '1') + else if (win->p_coords->y == win->e_coords->y && win->e_coords->x == win->p_coords->x && win->map[win->p_coords->y][win->p_coords->x - 1] != '1') { ft_putimg(win->p_coords->x - 1, win->p_coords->y, win, P_PNG); ft_putimg(win->p_coords->x, win->p_coords->y, win, E_PNG); win->p_coords->x = win->p_coords->x - 1; win->mov_count++; } - if (win->map[win->p_coords->y][win->p_coords->x - 1] == 'E' && win->c_count == 0) + else if (win->map[win->p_coords->y][win->p_coords->x - 1] == 'E' && win->c_count == 0) + { + win->mov_count++; + ft_printf("%d\n", win->c_count); exit(0); + } else if (win->map[win->p_coords->y][win->p_coords->x - 1] != '1') { ft_putimg(win->p_coords->x - 1, win->p_coords->y, win, P_PNG); @@ -115,13 +131,11 @@ void ft_move_right(t_window *win) ft_putimg(win->p_coords->x + 1, win->p_coords->y, win, P_PNG); ft_putimg(win->p_coords->x, win->p_coords->y, win, G_PNG); win->map[win->p_coords->y][win->p_coords->x + 1] = '0'; - win->p_coords->x = win->p_coords->x + 1; - ft_printf("%d\n", win->c_count); + win->p_coords->x = win->p_coords->x - 1; win->c_count--; - ft_printf("%d\n", win->c_count); win->mov_count++; } - else if (win->p_coords->x == win->e_coords->x && win->p_coords->y == win->e_coords->y && win->map[win->p_coords->y][win->p_coords->x + 1] != '1') + else if (win->p_coords->y == win->e_coords->y && win->e_coords->x == win->p_coords->x && win->map[win->p_coords->y][win->p_coords->x + 1] != '1') { ft_putimg(win->p_coords->x + 1, win->p_coords->y, win, P_PNG); ft_putimg(win->p_coords->x, win->p_coords->y, win, E_PNG); @@ -129,7 +143,11 @@ void ft_move_right(t_window *win) win->mov_count++; } else if (win->map[win->p_coords->y][win->p_coords->x + 1] == 'E' && win->c_count == 0) + { + win->mov_count++; + ft_printf("%d\n", win->c_count); exit(0); + } else if (win->map[win->p_coords->y][win->p_coords->x + 1] != '1') { ft_putimg(win->p_coords->x + 1, win->p_coords->y, win, P_PNG); @@ -137,7 +155,6 @@ void ft_move_right(t_window *win) win->p_coords->x = win->p_coords->x + 1; win->mov_count++; } - (void)win; } int ft_key_event(int key, void *param) @@ -160,5 +177,11 @@ int ft_key_event(int key, void *param) else if (key == 7) ft_move_right(win); ft_printf("Mouvement : %d\n", win->mov_count); + // ft_printmap(win->map, win); + // ft_printmapchar(win->map); + // ft_printf("%d\n", win->e_coords->x); + // ft_printf("%d\n", win->e_coords->y); + // ft_printf("%d\n", win->p_coords->x); + // ft_printf("%d\n", win->p_coords->y); return (0); } diff --git a/ft_move_character.o b/ft_move_character.o new file mode 100644 index 0000000000000000000000000000000000000000..1ae23d2195d8f00a0aea75f8e0ef5f6915866386 GIT binary patch literal 12168 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 literal 0 HcmV?d00001 diff --git a/get_map.c b/get_map.c index a3b1edb..d07518e 100644 --- a/get_map.c +++ b/get_map.c @@ -6,14 +6,13 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/08 13:13:18 by adjoly #+# #+# */ -/* Updated: 2024/01/13 19:05:06 by adjoly ### ########.fr */ +/* Updated: 2024/01/19 14:30:23 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "so_long.h" -#include -int ft_countline_fd(int fd) +size_t ft_countline_fd(int fd) { size_t line_count; ssize_t rd; @@ -23,7 +22,6 @@ int ft_countline_fd(int fd) i = 0; line_count = 0; buf = ft_calloc(1, 1); - // buf = 0; while (i < ULONG_MAX) { rd = read(fd, buf, 1); @@ -33,6 +31,7 @@ int ft_countline_fd(int fd) line_count++; i++; } + free(buf); return (line_count); } @@ -40,15 +39,24 @@ char **ft_read_map(char *file_name) { char **map_read; int fd; - int line_count; size_t i; + size_t ln_count; i = 0; fd = open(file_name, O_RDONLY); - line_count = ft_countline_fd(fd); + if (fd < 1) + { + return (NULL); + } + ln_count = ft_countline_fd(fd); close(fd); fd = open(file_name, O_RDONLY); - map_read = ft_calloc(sizeof(char *), line_count); + map_read = ft_calloc(sizeof(char *), ln_count); + if (!map_read) + { + close (fd); + return (NULL); + } while (i < ULONG_MAX) { map_read[i] = get_next_line(fd); @@ -56,7 +64,6 @@ char **ft_read_map(char *file_name) break ; i++; } - map_read[i] = NULL; close(fd); return (map_read); } diff --git a/get_map.o b/get_map.o new file mode 100644 index 0000000000000000000000000000000000000000..9a22f3aefb7c93c0dfe6a8e27c49e977936d183a GIT binary patch literal 4304 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 literal 0 HcmV?d00001 diff --git a/libft/ft_atoi.o b/libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..afb00108d3ce9e528dc1417d842d1ae2f8a5515a GIT binary patch literal 1272 zcmbtT&ubGw6rM?9lS$~iTHjlDx<9%%AI!e@zW2Rv-pnLhY~ewIQo@ar zJH*d8O31f_AD7&)M5cjRmhIoN{btf*V?=vwgxx(h#7yq6iL5S;h3~11HAxG*=R#mM z^OahMGu!Mycz-5TLAoe>>_TaW9qdz~eFEzJS@?9=*y>W7jr)6!ck$})&F0=E?$1mmZ&9GQc-)5pm?D3ixLT3~ z9@`^`;O7FkyBA=HqhUv=OER@hlSpb^*EItIqi$-_!$;+O(^S+dSurb$SzjYkt+t_8 zl;veO`6`hbT1}C(mz9-ZU|RA7&w4fN!~ZVt=lB)Ck_%29+*?>j#_yj4yf1pJr$C6#jy=CT;tNc` LFvWM~I(+}XJ2k>C literal 0 HcmV?d00001 diff --git a/libft/ft_bzero.o b/libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..62d7f17b044ddf81f796f38891616a6bd4df5469 GIT binary patch literal 1128 zcmb_aJ4*vW5S~kdFH{au5EM)!+GH`>Xd@9(4-^aGz((Tb+(a>V7cYAu3ZftgK@0zr z7XA^z!a^Id5aP_a8<#V74(xt2-@JB*xmep;PZfEX4vmYh)p&3ow9@w$*yF zu3k*5b^c+sqF3t%@y345zduuyb@gEG-Gg0%U~b@f+!s(5MUQ)R9&4pD z9tObtKybFPZRhI3agTvjs|~N{930^ADzXSaES5vZPw= z-KExv+>2Vmr>#ru>A{;gLR|{dP;*wkffJ0Q0ZztcQ3}{NEJld0F|1Xn_Vrl>Y literal 0 HcmV?d00001 diff --git a/libft/ft_calloc.o b/libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..6fada565c920000786ef685484ff217589b93f74 GIT binary patch literal 1368 zcmb_b&1(};5T8w&`qi4?2Z)O7O%L{w)Qh4>impDecqjx!l(5-u8|{9S&2EW>ppq&q zx%5BDpP-;3`WJZ2Mc9Ie^<)l0oY}nBuFLk;f%j(SH@}&kdGGCOZTUe#Q9z0Ucj3U3 zD8P@xfn86`I-EpigNHwP|Ch?cUd+QF;{9F(<((TyK{H148kqwv=H;Ol)xL$_`JW)> zx3#FeGf$zf+L-F?+2l-9PEAcL^zJO0AE==S7w}LU@7*V3(2KBOFP88KQ%A`EujIuk zbHoSOSa}!-_COm^A#7^Q`=8b4pPU_$f~TiP`ec*Q5p&0 zT(Scw+bf`SE6Sz0W5;)~zsrczBKbnw(&@_k!oB&~!bfBfkT1^=o`K(!yl4?phb{=` zQCD)vD~O#*@sl19dvpl@rKmB3x`gZRWGZhD!G|flnBuDfr%uz|mWseU)6$u5c70%m zYul#d!Q^@Dqmee2p*geiR1De81hW6kEXD~VotC={G@jsv`d;IVq9- zOXv<7dGpsrK{+SQPiHLiCC(5lE>B!kZ*c9)6Ok|bqI{CL48gI~1X-Z6@uH&`~Uif*_Ejy7%AI zq5h069XfXNAk=&AjE$Se9?Z`7ect=NS!VYto!Ja%8pzOK9ey)O0p1mu?BXPhVP|%` z`O&;=-(0p0y)}*nR2TaFlBZHVwy)pMcr2#3W<8bAA0|+}raLtJbHvm5gu8U-@CCAk zn!{_6qGdRxNZqVd%dQiNudo=4N8^cFx4KI07&M$hyVwP-5!U7>Mn)fT>;f`c6bJN3 zO@(g*8 z)v%nJ4a{-5$+mW~(JD8Jr@$<$Zs&}nBfNkTu!?CJ%sj~*R}9-!e5?qp$}8L`;C^n? z{tuDG8NmT_8sdL2eKmo5lyX|bJ>rR^$mKoBGToyZ^iz;Orb5(DB46}zdA{7|u`adR z`m833_V=!P{~T)mL@ cFM;&=-~SLB{O{iNh{n7aKq-A^IY*xV1FD2!>Hq)$ literal 0 HcmV?d00001 diff --git a/libft/ft_isalpha.o b/libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..0bd62e8db83892c881ed910026096413d475ad0b GIT binary patch literal 1032 zcmbu7&r1S96vy9cX@#XkL{Nvlb#lnM)S=MAl8_F8mmqY~^#|<_(N#={f}oJ1`b(n! zp+o&6K^?nw5b8ahv2F6!!0h|J&wJlDtFvdx^tMmaKrRh7;3tz5;Kc*uJsgK|?98M( zubtD+i_=dYzL~%Rs&@Exrmqs=o7uiP2;YTJJtw;~=snoi_=M|Z_wWfaM-AI;=y{Xd zCB13X>J`V!Ry|&l>Ly}+_nz7`z zNQh)SnQD!@J0!Hc|reWwNCT7#o#ouC5ibqGe~1Fk@XwfYEZryzgA!`rgn^zghtBhBO7Eq!tquH36lPy82CZ-?Bo^z2Gx@cvUN zYy`OJ!dow$o(odFiS-q!kE2fN5b?On&ddcU3OG_g+jSw^NwC=8g^apnr)}ivi0N^ zOR!`-nd-RRZ6U{4nE+^)$DsA1S}Yuzf5c_ikrzXRtKD6S-um_ygEk5#^vpSjYyiH- zvzmVJ{h_1CEGs;nOP5OFm~t_0_BgOg%d$+HLyeajPPI{QAZNF@$qo(+afcg~GhoeT z*D4v+DqcVxSletG%segC+JW?e~1FE;h(Y2k$h*<(^H<`?TA{8 zphuUHHQf`n#XYJaK85fnR1$MX)*Bw4_9u*CpK?|Dq!vo<)ut!@^QpH(?pbJT zS)3(eiBxBz?ud4b)hU2-aSTc?tVDx>#YY^wfxK8ECcV2W;akt%vfsppDLwa_L)Hgh z<9VVNJb!3$_=tn2bE&dZIA&ao>pc!NUTWBFt6_3rm6l=XA~9QBX9tIcn9a4y8L(!v zYm~HV6)&I;%+i}0(@#q^OEYxG09FBJbBk+b#B)R7KSTj%c<0PHlJBg$G{^H#6j6)i zclBjtP4`4{m=cK*MB$IScw5$+E}r%$jG|7tv-QbYIC6Jydg^b_yd84S(vy@(;Qpsl zDELTpU{Y?hE;->_z(s!Iw~+JZ$1Q|wTt7kgPXzhg=PzP|`|QH=E{!J=g-^UQ&7u9j E0fTu}hyVZp literal 0 HcmV?d00001 diff --git a/libft/ft_itoa.o b/libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..9d54483526c693bc7568e8dd0cc9a60373a2d369 GIT binary patch literal 1824 zcmbtUOKTHR6h4#GHfq}xtsp3L5Wz*skhE1RXo<+^Ag!Ph5TvA&N!kXJOi3rDK7xfw z#UT^~H~JI&39jrzS|7M@tJ{bPxDf`75QyhY?` z0`@J=0?c&n>v2zw!%>V(XwDDK{v|tQw_0}VeVFU0HM{IWc=aU4Y43PmofOScn~kre z7^N=|1phVAGIgeUZb>ALA`TEaadoxP4G-Imvd@v+9Fv}aM zjk|1YwA*bj40naHsoC%4>8)8MJXE2|5FYZ*$0;{=RF??5+=TGjVbriB?hC7V)M_tM zJ8Fwgz7eB;xOSr}r%}V&d@^jcm)rP;1EA%ot*Y9Z-iktGBsO+&Y<%>>*f>BURVr8| z*~saIIe95lT+EsUIX0q1l~^QpspNS_sS#puSAg{B4oJ%b(y88_&+25oOBmw$E_+^pJW1{k%#*t#Qt0V|-)(=u2_ypeCsQwkS94c|Ao2$xh?V?! zg2XW)-kTk{v$zKQ!D!#_z@K5UG>+J1nDNAQ<7(ke5Nn`^?CfoM4hYn?089hB%TU;>=j{CHUV4zeh2bbeZ*EW)Avp z(4FunPv1U51sByAAw$3y*0*2aNaf>jNgoE%qvRCuodui|I8u2Ymx{oNp#d890PsBS zx{V5Q3;ysBBku7)Ci(t3J&B6=yW#vRc7A+cbbj>yc|JeC3FLy4Z4<=`u04EU`Ah)i Z6a4dA$oXfdxEV&SlYyYTL%96?{{gdl5KRC8 literal 0 HcmV?d00001 diff --git a/libft/ft_lstadd_back.o b/libft/ft_lstadd_back.o new file mode 100644 index 0000000000000000000000000000000000000000..83158d240fd51bf0996eab8dc59b20490da2fb15 GIT binary patch literal 1192 zcmbtT&r2Io5S~p^O^dBT3Ki;MZ|%j0sh8M88i|!w z6k&bc1*=!Eo-fSj&+#F23N1o|KATSp-!of}=Q4YkLBee8qnv}A$*gD=jAn4c8uF5% zH&|alrkAI&!$J<3*1yRVHtTePc}fmM$Mqbc+@69%Rrf;WIiUj4YWuz$pb@l{E8g$a zRzu~qK68$9a8PfOD?G33*U`lW9`Ro8$NFK%@!eFeXn_b-M>$R8FFx`A!^bVMGq(A~ z!`4s5(la=RanguQl-X&RBHHPmQ!Vv5jUFGg%z=l<)OS4^T7QNbrPA+g;s-k~Oc8C~ z_Ks~sGgGfj$FOz1mUhuV?bw_Niv8w<60;_Kf9+S%nDu`8j}Y`b>HXAWU9a`GsAab& kZKP9NclgQm`o2_8(Eii|h|oyiJ&AE*j}ytIIZ2;?3!GPbMF0Q* literal 0 HcmV?d00001 diff --git a/libft/ft_lstadd_front.o b/libft/ft_lstadd_front.o new file mode 100644 index 0000000000000000000000000000000000000000..c480e340682c46478292e63e06d229084dc550f3 GIT binary patch literal 1040 zcmbtT%}N6?5T0#ot>8})K~WET6NH9VFM5$mQFCZL2t7)>t!owcN7}TgAPS_LeN{i^;T!rM7Oaw2a=ijzWFlQBzv`0+>RLrC^KLKelvvvyhgx$2|3*&oKnA@&CzMPxdHhrJLpWhE&FR7}`s0uDvRX$kA#pmNysJprulyRJ=v z=L?(d?3Ob~*H3^sPRFfaAs#>jSkrbaW*?!-a&3JTRtMG+O<~p0pS$G$Z53Q0K4g`u zynkQgBF`dZD5sIs>hdyI=cVYh3Z$P!Px`Ee-^+YS!&QIfP2^P^Eq#h6kyx)SeCtmK z?hvtOsacC?Db%0V24V@VhEgsY%}I`Q^rI-f!s)x?#XcSLHI5%s=dS>z)A!%N0)6kK Qd6&Yf^rWMER_mz#U;Tt)_W%F@ literal 0 HcmV?d00001 diff --git a/libft/ft_lstclear.o b/libft/ft_lstclear.o new file mode 100644 index 0000000000000000000000000000000000000000..3b791fbaadd106590fdea845d5c6c4cf9efdfabd GIT binary patch literal 1240 zcmb_aPm9w~5TCSlt-9JG3W6f>E0jP$&o@C7Wi~W%EbVm!&Hdh3aC= zMG(KkevE>G2fu)R0NGveP(9@!#F_NH-ACxrftTORZ+Z&z!)J%;STwL)!WEXAUBoh8;jODSAtX*?~OW3w5T)DJ%9dCtaP^rxSp zyBY^P)*a6d*7Yqn8f=7tZeBN9hPh;}#6|W7b|*VG1JGVR0&UpTE-oIgf53-dLY@v; zN}t$7Dk#Gfg7b)H6~4F&xm$ReLZiY95!4Xr{KaRJ z>4K*l)LUv`M6PEW+#PZ-oY42(fWsQ^c?0fvt{s69gxodmJ?JhCxb19$;dxtr&+hke zZtFtXcfBxhMJxANZ!NNYSM6drU<`P~?N!8WpYZ?K2DYirY4t-a=XNPq-q{7r6Gy08 zTLg06GFP5C)zX~Hwks~WAQC4KY3_10B)^CpNn3bS`zC^`Dv7>mdx%#QPL=*q1I3s1 zl6r^^a?jPBpj;*d%K|0H|CezGoq6w{h>PSq>HRcgSuc4LxoRg55nkgtwC|!`{x8*& Z$#@n4(7u=dopLQ9910^W8MEV`t56~}Bu+T%i7p+%CbPif_E^9Gz&1F zn)t=BTZBibtn%I;-u-9uUT4UAtpV?LhLAm8Knc17$euhv_wRFx`=tTze;D$9Vf35# zJHsp5hj)M3J3pbi+X`eW=Xy@Cmpc$qydMU+{A;$#@+C^dV6Z<$2}mo zrnEC?)3|O%cgQK8PB2eN1B-;`Fe%y+m>c@O2+#>aDOmYqbtRUL+XUu$2Y$_|*YTb9 zpdo8sEbGDx1EI>rms%rod;yI};KvX!7g#JK>FlCC^vV7YxVQ=3FNq5^OmQNSoUvKV z6GzrWQ3d)vbuRfEP%XW25}(yUODgdYExorM3C(AaBk3wG6K5)TWs>NtZSU=(!I{!a zGcbHzuc;C`$bB_ufpR~T;H|RS=>BzFL}%Ll+v*^FPr5(7v98zrOXSj(QHbU{u6xjb ei=g|ZdV-GcB7i13$=)ekeiP9fgq=$kcx%E&onD)|KBqFJEP!B>bg2YXn*wFn^Hj@wqv5-~> zx%eOW$0*{_n^!L$0v^&^Zrk^^Gwry|u@7eFec$`OH?y;|r`63*Da!&K7OcWwq*;J_ zgRI1K1?Ev%L*+$BZ6iQ}ty^N7V@*ZB6;8 z9Ni+oq%y~c)#>;yiXuL^viB~b*68}OTWGqDe^}^=u+t9wLg_tQVWncJ+>NUru-R*B zj$s||fYrCH#TU7`bKLV1ax^IF^jLdkpQYAcW>dSUAYyiKq%-g{npI6h>L1!hX2Ia& zwU8?)B{`nBm=t{ptQmNo@Flcl-R;P>6d^D_kb-S&*NPqKG`|3I-JVx>4i50;4}pck zb(r{EZ-tI03?FL(>&Q?#4V;fWn*T%8ut$1EpT4>eB2hE0Nn9aJBb(4w6xQdY%XE%r zCGs>=^Kteq0e6v+Lzq_9tx6sk3CAbuNn}f@2vai^?w0|a%%hl literal 0 HcmV?d00001 diff --git a/libft/ft_lstlast.o b/libft/ft_lstlast.o new file mode 100644 index 0000000000000000000000000000000000000000..af009cfdb4bff19f46e4eb08d4c665e354875967 GIT binary patch literal 1048 zcmb_bJxc>Y5S>e+Mlc%1LWo5=3&~=%(MBS2dWBdh0UL>zcz)pBCFC{|1yS$=LK?w; zVPQsa5xmt8O+wFXlu(mtSfG>H_t}nEV3J&bL5ornSt-Q1Tx4I*mLH zif#I=jHd5mtEs`*CRPy9KMbT3@ZtAU;}H8p4@EuoNLF@!s6p((|YZvY4TnV&^2zTsC9u5f$@ fpFb1qi|&6H3!-}`Pw;0V?oon4KDuY_!|Q(nWU6I= literal 0 HcmV?d00001 diff --git a/libft/ft_lstmap.o b/libft/ft_lstmap.o new file mode 100644 index 0000000000000000000000000000000000000000..f038204b9e80bc85603c66d0202fd407be17d1b7 GIT binary patch literal 1408 zcmbu8&5P4e5WruWQrC}li-?E{_N1WfBUKjMi&P}~4yy;T;6W*AHtjAZ>25xDSD`4@ z6+&6?D)n zRVdR~V1YV4{t`tI)EWZvja0k{_Z z3%vqd*xA%uMX(^Zo3Jh3ZdyX&`|qVBF+~3Yx4|fy{{=57=EV8&jKzMzp97QEq8_OC huu>5XiMz%9DEYDWf#rM0ybYfC4IL14u~z>3e*r@vxjO&= literal 0 HcmV?d00001 diff --git a/libft/ft_lstnew.o b/libft/ft_lstnew.o new file mode 100644 index 0000000000000000000000000000000000000000..e2584597e1a6746bedadef13d6b1e6e8a1f4add1 GIT binary patch literal 1176 zcmbtT&r2Io5S~p!jBV8*r35T=Z$0^H^r8nPt)%WD_FzdbMZ&tSQQRMrebKZK6haFj zm)`piw0}iGh4dd0Qs^PQa+*2@M(_1etAUnuV)nWc869E^=>XU z{Zfv!ges5Fj;zkDxqk!IgJ!^+rsLT`-8^?2(McGX#Z|V#ip#}~W~{DJE#h%v!1%Za zMk{YDJ(|gV!G}CWo)+Of{k)vde@<=BWmE4kgNW&Pi*yG5jHjt-P?{kUsAr1`AD@L> z1sAnN$D$xIXleZ&Colz1C#a`n;E30}hzITku!if|jJquk%n5zp4bTZf?y{XX)#ZrW z&M7d@JNIk$;URXdE-KvP+EK&yUGQzs3!TZ1%mEhh2DcB;e(=fuFKW0!ddeo>#c+k1 zrq3MpjJT|pR}!)8uaxy3KSY80s-qY5S>fZDEJY?Le%0qD;J}UHX$OXSBQv^QsNmmF?e^8+(uLg3W^ZY_!ImY zmV$+UL9n*46jG!+XO0~`&)7Mz_h#PA+u7Z@OKWQ*Wf;I_Kpws$W&s{zWFevpFoKmu zyZvUjTfJwiORRm}>cPa#47nYvXLkz2cH8Q8tnT%r(YCtpuVENswD$zXgQl;VX4!T8 zs(C6KL9Onaxh1hEatpcDW|Uoqsi+r#aj^@=S=N{x%?#h+S>}+ZMYc+xwejq2YJF@- zVFAT|n2r1Ze1!edX-NH|1u~N{KI(;>sVhnGLnV|vQy|K9&yzkneqBkixm{cclv6$i z;ku_@$vHg4`&OZ%N^YQn+Jywskgg--QK`~!JQ>S~GKfGmlyiW1?h*cj6>*PrpM7@p zoMj>x8-J9cnAT9DuApOnCr)SC(U?Ib{bGVY*YSLU=l+beAN%pr`*;xZleKxwA$Rg) zcF5gp&5A~b>p7weffkxOrdb%ZNiU&imx1nZLL-@}6B*-7)F Oh5H&wM|0+Vxc?`;PF}+R literal 0 HcmV?d00001 diff --git a/libft/ft_memchr.o b/libft/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..be0211d9a66e2c9548a86785cb80bf568f7d84a5 GIT binary patch literal 1072 zcmb_ayGz4B7{9c&R#02T!Pn4D5In3diVrFh&7clSCy^Rs>Z?g5y-F2CK@>w5{}Z>) zf`j@GNXIS?1&6wIi{BS>_8L3-!R7Av`YyTLmAtkRkR-xOB8#MnI7>)fAd@bgBwgT4 zDfWkAU)Jryr(&n7%8OhFP#mBF|LqgwSmE%t)*I`|#}t zgj#x5rTSqyW2uJTj8ToyJhPa(2lKgs^S{&X0V5A$>4 zGM=MYod7UDDUz^$^zfLE=lk<{7<9fCt?wcb)_(88PyV#!-vQ^|dYET~EH3?53iXiB zgYeYbXwcIz*8zj)IX@0uaLvJEx`y#v{QNn=bN=_=27~|IF%$EQy9l5V;(z9S`2OFv C338JF literal 0 HcmV?d00001 diff --git a/libft/ft_memcmp.o b/libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..f6e27034a9f9da89609bfbbfea95d5a07b5dbd45 GIT binary patch literal 1136 zcmb_bL2DC16n>M$wnB7MsZi8IZlcg3(Th1KDP`>(S`lSWB5}Lj)?#*3l1ZtBU?D_Y za}oc8;K74lJO?~9S5M6`7ooYe_rUsII%BrW9(^$T-uu4qz1e*;`_5c@oMH^LF?a;i zOrrpW)HE(n!ZKV&r6qztB50k8pm`z!YbcJ)0nwt}8iLWuVt8bZ2^qEML6PX1r=q() zFn(s|Fg_7o3*&`cu~+*2!8|rP*Uv=*6b(gt#6+oYeC{Fj(LDajjLs$MG_OVN9ut8% z7<~!DaN0V9t=CoS?EIa6V2-=y_~kFKHk!U{=AEkTZ|C>idSj>N=Zp7vfftvGrRIda z4-43xj2%1!wx44+v$J!ba4@$Jqeb?E9?MsA?^7#RW>Vi!K|r#tBAkJoX$EeL>LiL3xi1C@qZ^v-GzxFqf*Kt(3m;@$hAD&~o7tRhbUH>536yx}nB0dw- zQ2Jf%zoqu)f=Yy2)^>9w$i?hw~M)AQGWu8V)x3lzlPoob#c;VVkeD5Z1Oef0i+ E0S|495C8xG literal 0 HcmV?d00001 diff --git a/libft/ft_memcpy.o b/libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..6fec3945f78a669c581ff0d804f20b09eb70ef99 GIT binary patch literal 1096 zcmb_bOD_Xa6h6~>RJ=+o1dHy7#Er5cLW&G`fd%PGq{bMJ=uD-Z3KEZ`AeG5OxxLP|>M=R~L{}agpNi8TGxpH0-kq ze^_t}C~}{Jr%8>7Alw7ZZ9`v-T4wM!s;Evl7V(HqMe` z$?2k3oupwHeSQMvd>xe2xH8z$8hgYS9zvZKMTvgqyW+Qz#m<(iE;OXJ<^q)Q``A*~Y02OwXC7VIi<`w!xOy(qjc%(~p2< zvnOUo+ugo!A?M3HfJKRezRw^D;IMbr??3+Y?NFZ6FGD{cdPanC On+OI``p$A6IsXUs>3O99 literal 0 HcmV?d00001 diff --git a/libft/ft_memmove.o b/libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..02381d8dd41547ff94787b56344d172410cbf6ea GIT binary patch literal 1144 zcmb_bziZn-6n?Vv!+|z7#X}*5XzP?CZkL2Wa4BkUNHP=zU4o-Hm!#B^iY=Qo5LytJ zs#*HKbjjF|Axk0o6SNfM&DpfM@7Z^;a%jwh^Ly`m-}jw$I(@UY-W3c3R2Z-c(@voP zYlUfDAD4AlK&H*3e>^%%dDI>9$WHjR6^}6Zxs~z_Ygq1YB6~mzgc2TI^6+xRqwR!; zDU|z5lfjUmZzn&irLhdlAJx*}FWL-tCi96`xPhJWih20Q;E@&MHc2_m7{ybgn2c`7 z2$lEJboUDE{jL{u&1TE-j?A8DcRu-^S$oA+S#71Z-W^Y015`vO*UB4%QwMENe;<$0xc3hE} zuqLoh&<>n^%wJu~j}SI`6mxuT<>eFFOuv)V)0)$Gb=j+PQsas$WS+-N`c(~2W&cvc z)&44zpQ^Le&vD2aR2U{Fi%S^22_{{x!blobE~ literal 0 HcmV?d00001 diff --git a/libft/ft_memset.o b/libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..936618d9a85e3fa0d2231efe074b37dbf56e401c GIT binary patch literal 1040 zcmb`F&o2W(6vyATXeE9$;vhKGNg^>(E<{L0R`*aMq$iPDYy61rR@$kQL`WoJQwRTx zi=%LGi&aYZ-?wwdM15dng%~9(pv&OR4&Vn`lLp_RvgN&_z1Fa k+RI})!_f$J{|YEy@ce7o5Ij41-lcIvX7bTHt98`=-;uOuivR!s literal 0 HcmV?d00001 diff --git a/libft/ft_putchar_fd.o b/libft/ft_putchar_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..786101f83fd99b1b1fee865a6bbdab008793650b GIT binary patch literal 1128 zcmbtSJ4*vW5S~kdFH{au5EMxx+PD~Pw2>20uMi6%Vk6;lxfn5biI=??1yK+rK}3I# ztrq?f!NSHag>cSXc6B{t;{*o%71r>sll>A{;gk}3>g$T>@2eAbjp^Nqt0jmCweA0^FO?u6tAk)zOg zJSs}Um{Cd8McFSorf_QLooXn$%$L*(D#%sUT_E4R2v`zQ3i*C%FQd}!|9hg5{3rdN uW-Rk1KaE^+E3BZn#Pfx!$d~V>e1fz)7J!FJ{O#m>76A<*DUbFf-v1MRCuM&C literal 0 HcmV?d00001 diff --git a/libft/ft_putendl_fd.o b/libft/ft_putendl_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..fedf7874a789548c592476c263b5ca75870a00a3 GIT binary patch literal 1208 zcmb_byGjE=6rD{pK8Ui2qM$_z#mXVkMjMHWx`ikRDMMU08x7e58XLh+ z5P!l#Kfs?5ENlb|3nAXS-Z8@xI}gmBx#ylcduM0%Vts2PrfEz=6RZD<}yn`m|ei)QG5Wj(_N+=>)K?pum2hvn*t37g5zUlSig#`4JFE8!1xbT zK<{Di?QZEfQ#MD29bmnSIS<;1;tzWOZS@cTIIYnG+zaEY{ex*mk1KkLbnHm&syEJf z&2~&K>|?>W<-4x!!Nl{0%{RAmb9G@_6~-Os$Ss(~B7E5cs<00WrJCv5tRxE6K-5L8 zP%2Vj9hypHdqt;{qljCKLya)^flplIf4~{6f%}f)o-SW2l8D~P1msaeR*|JZo{P*y z&k}3#OrqGM7o{mN0F37#@74tANno@}AIZ$4$*dHJY1yy_r7;*%BTGm(YM{)c-bKiP zR#oo^+Ha`_^D1QjQp2CD+y3z%L&$yN{_z{jda2KV7T;?7K$kFnaYyyCFRVvI`)`0I SJ)waf&&1cnScmr{`u=aI_;|(u literal 0 HcmV?d00001 diff --git a/libft/ft_putnbr_fd.o b/libft/ft_putnbr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..82110de3db6855f6f9fc38c61ecfd227c93547c5 GIT binary patch literal 1464 zcmbtT&ubG=5PqBVhtz6=SSYBNgW{oN$<~WSC=prRLlF@IUL6LOWt9{AD9{Y%VxiA zb`NGC=|o`|bmtbr%a{kfj@b?Ovn}()+VxMyvV)ruz58|!Ykd86)c)M@dr`%qXfzRi z$hN+;%wy0WkM&mgDfQ@MMu>dTccq^$Rc&`8z2kU|&AOX5R`jfHWQbTXI=_chkk1LvZ&uMWeig9f m`k)T(1&on#L);hY(c;^x0>+$(K%e_W+@l;*?34TF^?w5=uead< literal 0 HcmV?d00001 diff --git a/libft/ft_putstr_fd.c b/libft/ft_putstr_fd.c index 2b23b47..25fd4db 100644 --- a/libft/ft_putstr_fd.c +++ b/libft/ft_putstr_fd.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/31 11:45:55 by adjoly #+# #+# */ -/* Updated: 2023/11/05 15:06:13 by adjoly ### ########.fr */ +/* Updated: 2024/01/17 11:26:44 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,14 +14,5 @@ void ft_putstr_fd(char *s, int fd) { - int i; - - i = 0; - if (s == NULL) - return ; - while (s[i]) - { - write(fd, &s[i], 1); - i++; - } + write(fd, s, ft_strlen(s)); } diff --git a/libft/ft_putstr_fd.o b/libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..b731fc013eacf94860cac4811f7dbd98396817d9 GIT binary patch literal 1208 zcmbtT&ubGw6n>ke^#@ggR1hk-c=6P+(MwBFB4u?BrH4X}vTTz{E$(i@W;U%#R452b zF8vdVC;tTTsQw{6w2*@rp@$rV_}=zSJ1*(T2eaS2?|pCP&CJ^m-um;Bu?>F4Vj(D{a>!k2IDL}9eSskcPxkASZ3Zx4hQ2AiH8H^(vi%*=dRrU z>Aw5{jjc4+soM;Lc-!r(q_@+F-P$9uBx;Mbl{Ak&&i4YCXLR0fg0ok37Ur&8J-|Zm zB2R;Cl|IjIRzH>2Zp`*kK>j7>BVU2vlWE~HSchf7CgLrN&-X&^HjXN5Yhl4XI8WL8H;zBr;6;VW-1^O6$V19Jq@DSi6RwiXluWxlTgJV;*M70#YSVXr-SBe z5MkJl{GipsYu<+4WJfDrLA~Ihot%EJZHxc3gT8s;nr!4Y~ zo9}%gR_w`Hj1xy_Tb&*AJ|m&LD)r<}<799NT#T-y7QGIZ zHefd99f;yW++)>T><6;3+9&evMKDpVraQ=CHj{eJ0U!=@?de>3h#X5LndhkJ|3pa3h;w{l13UE@G98%LmQ zFD9MOCX-3n0?Ix*NF<3xkD)P>9y{kCutjZlvYo?!LiW8xACx#Wm@oB!d#ds4^4h+< zlx6eJwn5SK+Vr$XU2f_@3Kx5nJNeU0cjfms9m%an{5V{hNE#lIvB%LK9R)pJ03*o7 zN^zZ^p>#N{?QhCUFB5U!DNNX-<50G-%4XkMn&ud*)@q+!mqo`c-q^XzM$z;boasU* zDTuAeOD&8g;-~$dTqsR7nl4=Fc?{d59vV4s;{om$)?+ky2M!P%*CPoc3k-v@!O@O7 zKJGi(s?`AJ{Ag+n!w*e29q#vm`S$1#;^2+2N&1WJ*W@F7g-&s?m%);?(DIX0&&s)m z1N9z;%y#_+7_uo1r{n*cjeoedPx4nA6}^!zmI{??>6==uzE!QHGtVf?O6GEArNOk% zl0_^GNc#9KB5kLnM;GRkpTkS=7-0Ay-Nv`*#S5uVV=tYbi{FyKgy~k9mXHsS3w=yO zHPgSx_1NiD|7M`S&Gma{^t*xn8?HCc=vz$BRS&Q)0ZEWQ@#}Dgu+|v-?O-oJtY+X% zco4T^h!Vnb0nfmLxXbNX4`=`s2RusK0HmTIoUylA_|t%2gg9^TP;3T(;TwmzAU1nA z=p0A@$4~3uaL-6ja8tzRLiqFlfqxOg!*RMH99K)kPlJqvYW$)J%5p*AVy^E;a52A~ z2rl~mE`r;g)9zr7eA3uddg$dZRRjP`6pr zv_h?hVzCOZKuObetwxkeRo9ePU(a8z>xJTnL@AYSme&g#8}MRW<9W2};9V$d1Y-mN zZdGd=>`*9`szsDodZkE|x?a-@SAl<2M*ct0w-6&fBTfY`7w9LS1;2bfgEN{T#?1pf z%cZSI@aS%$FYZ#5w)y4bo+IIo;8nq^&Itb@A}zp!G4LxErXP9Ur@|n}qJF_&3t?f? zdy%?@PWXv)#rMC#*GRxb`2P|hz98xs@D>QO`gdpak24njqW^aRi(i>kf$hK(&~<(x c;$ComNYVPg2P|4U+O>I6E*^l;Z&v<)0q?K~QUCw| literal 0 HcmV?d00001 diff --git a/libft/ft_strchr.o b/libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..c5583ffe7e37edc766beeeeab56453afdf2dce1a GIT binary patch literal 1240 zcmbtT%}X0m5TDKZjjd5C6f871+k=lpFM5#_NxKITT8Ma&xUSC++}+6LMYJ?11Pe

SN5vj7{Z zo}Z80JdB~TXodGyy_L1XT05+^tVXT7S{US3{`{R1nc0TSyPUL#JQXgxF(f!F#mnKH_QQ zregZ&49I=_ho0{-fcZfjPn|A4pidy)#KC+9eFB{*eyTweL?B&TD0!klIAzb1zJgs< zs;I!(56JVRr#<9c>4WggN{TOQ#kq>IokI|=d+e3$ogIAmJ-wdXFYN}lCwof?2Lvvl z>}|BC9@+ngi%ZZwlepE*`6H1?_UsVmi6a|FUI+XgIG6l(R7-E21oadl+chwXmfoFP z>8<9+(UO#PnuaUw%rc>^UiRhRqpoHyF1?NiF+ZtY@75p1dxGRQx@J*ZHhg}LzoOIc z{=f7_d{4SRy)oA_zk-~(+9{(s$MJ%uuIF=6Jt291g&b=l0Z&?ZsbdPMPm=pT1O8`- AGXMYp literal 0 HcmV?d00001 diff --git a/libft/ft_strdup.o b/libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..5c511ad03b2d3e2e0de9eee45ec3fc8120e1d140 GIT binary patch literal 1312 zcmb_b&ubGw6n>keb(O{ji6AJrh#(#^BzmzR5|OoYhzdfym9X7xYjJl|lTB%bU?D25 zx%5xai+_irSnx0K&_gc%DC{BLauC+{)|qBl)>|LUd~d$@y*D#&XP=vmyE#n*X&T&u z*-EkiZ*w!hp15^5g~}!mzw=>K<>6qmZ$=d1qrv1CIiYzlG7p9yG;UA%$DfdpJT%9A zI2gm?%OZ*Q%_(UQAJ9Y|ADI(w--~u{>ah6YvckM6>lhqU@O4=qnGu!_&FJuJ9LF;7 zrJz%VF>W(Oobuu4>dGf*uJ-+)Z`iKouNzxVx3|&pjoLLoz)9z)O(6na{ zLEA2A=NC@sd)SZ*$k8BsPt)zwrB}H-#rfPjR1lGED@YgMcbpZ?gVIzXIE#2j;gh|P zyNIJCG%7s$4}VUG3WzlRV2{Wu3O}dthT!Q$>ZuBIz`BlWvB235fY}|-bNm3-f>tl+ zw)>mHa~&U;-w7PHe7{-g1(y8;nCotNEvwzeZm)|f&g0fv*YX_jEZ6PWvpUQMh7|*A z6>-NSJQmx)D*22`m&7G^QnB>gpT{_HgsRoWLVh0^OMfHErT(Ywo7ku-0w)paNb)Jk z@3(*)Nu>_m#C{08B2a=Td-M-q#en3bhOn4LW@sD#xJ~sJfjWMqH=Mg}_u1P><4!0-V{&;cy$z`zMq8S2sb)T8;0f=6fV50B2$564~K zfMh+IYkx5Cw{Sz49~k&sS%J)#mLLL%89cgOe|RMOzG<-G04h_0hX$tlZ?PfSSx`aPXNuP8MqQ7<(kKCLJ*Hx*f- zUNVCoP*X`_5|FOU1<@3PaG(jySWM}FrjK+qIizF*mI3iWm<>&x1C$R7Cz!MVi~*(D zfiy_J0h;(mC|?~-9A-a^2AKzABP+du%t2zKtF?#dFF=VqpcqWQ1(IG66Fo^;0mWF* z)PT4JP>Up>av*)6ECbUI6W0NXG5h?_2T~0{3`hR*BzjR1S&`@*S`R|-Byqdl*0%dml1-?>YGGB3 zx%8$7{{a67L5hm$agR9$MA(3bc*{Xp-Q;;MgL?SoI zUrSIzG&wbAQ;nPe&pPe?puta#cKtE!wj>F}v#Iz)9`&s6W;t1q=Y-Pk6oWp(U^zP1LJu)))qj~nYv-8M1I&@Ia~Qn^%v zsF2pvS3y6qQU9+vkRbJIP1Akmn|wAU$po)FEwf-CL!B0l8{&S%TK0}G7VjV{k9d7? zf5*WAk$7QedB7ZK%u(UCP&>R)`~}m(F^fTd5r$xCzqffX$9E-RJG|X#ig!Hz>XalC z(Z9gBzr6i_;0eV(asPP6B3|(8z~trF1+@obDhE7X^o8*#*===z2_NRbKOuMA=Qf)7 IPO|m?0Ofw%+yDRo literal 0 HcmV?d00001 diff --git a/libft/ft_strlcat.o b/libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..fffbf9292cb42690752c93653127f7e8ec109700 GIT binary patch literal 1424 zcmb_b&ubGw6rN3DjncYNDkzHNCJ0>`y|fAv(bYLLQib5jhHbKK#mz>NO^HIVutc*B zs24&11OE!UplFZlEf*mdArTMpmV>aqw>z^P*7W9s+4sHg{hXPd=jzJsgd`Cz61h$e zEY1>=Ngm*Q0Q2NHL>8&@gWA7VsnZ@)r#YlfaX{_%n8=+o5C(7na1P;Db%Keb@1fC0 zgZA3vVE`P}17pYySM==Do;sk{R8M|+GDuQgngqsCC!^OujDiZi0#v~6Kc$>Ym%nw@ zJ=s1T#t&()(3d}^()NVNZ(VThs(T+KxpM^5uLwcA^J(ZdhIp?Vz&^EI30n1m_89g? zuYBL-gs0qv$@O4qLN$4EjI%% zb|>@r0g;~FCsHdTotr(HeghYA9ynYm7w}?koXEUL+?<<9o|PaZ;HP~a0GT4c{b{}= zN&G|OIh_*tpcimiSQ%Jxxy6VSXk35bJW%c(!mk~|XBm$ZiBqMBQr8VlvGkTjlya?F z)lG|RSfz$lH_BQBb(1J&&C-=ScZ&-RODjJnieYS5OIoD@r@hI_=v$?Yx>nVN3QCzM zP|VWSK|igc{tr@t8p2bFD!yl%vmz!0@wYYuG;*j#$uooB3-`tE26OQ~;?eIX6oDy3IxhHJgD7wq?mm($ve11;j z{-*7JhZW@e#QozL^L)-<1unVb*Ff#SisT*3=i9)16mEwWAqIf>?C5h@V2cH!iT_Ew F|6dgn(=`A9 literal 0 HcmV?d00001 diff --git a/libft/ft_strlcpy.o b/libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..e25b437a106995bba9b9c0160e421c102c8b8836 GIT binary patch literal 1328 zcmb_b&x_Mg5T3Mgt+JZB?4qED+yrq$tCy{cR3!QiyB>t%NlG@&u40ldZMt-Yq7YU# z+lvTZ{0lt#7f4}6uX>Qpu@|8g5B1iA5NFc&+!*4`fyvB#^Ucirm1p|uotz|r5D9L= zQ6x}+cex|K8oO0EiOd=czA^tti3Pn03pyhf)Q0Sn9ukH5y&)*O3*`2Dqfv|n`gHsX zy>T4%*Fx6E3je!Q9Ph&cmTEaj_Y+)(>B~q zb=zvSA2(gKd_^m1<>hjv6KAhtFM!4P3m`qc4^p=%ou5Bmc!>vi0dZ22uk^Wfy7(e@ z`_x?SGcpLsmInyS@H5KF<{@zjoIrQAkig?vh^eSW)U;gYfQ**(7oHEv!9Q@7<1{%r zU4{*>-u7CyxwQjY%d!p4v$`H=X47#j*Ar>W1MqE$IqfAs^D=LmUun=7D?f7TtoOJRDmUVH?qJC?%E97 zO1=f^Q|0w56eL8fUqB3g3!8&pps;#mY> Uqmy1c<+_~M +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/30 18:15:57 by adjoly #+# #+# */ -/* Updated: 2023/11/01 17:15:12 by adjoly ### ########.fr */ +/* Updated: 2024/01/17 11:30:30 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,10 +14,13 @@ size_t ft_strlen(const char *s) { - int i; + size_t res; - i = 0; - while (s[i]) - i++; - return (i); + res = 0; + while (*s) + { + s++; + res++; + } + return (res); } diff --git a/libft/ft_strlen.o b/libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..fec4953546d51ec3bdd7a572cbf083949fcc7209 GIT binary patch literal 1024 zcmb_aJxc>Y5S>fZDEJY?Li~Vqg5Z*96AR@;Vy*}lNx^w2-)%A>>1G_Wty?MKPyLXYvtwl5qWN5Gq-$=3m4+^OVv$`*-R~wxA@YlkBQvV-y68xVOpYHe#_eMc%&NMs?QtmcLY>zf+XLoRxy`cc z`MEkbtpi|=bL1AxQVBo30<2~`CbRbn<(lc*-!^6e!v(lm#C+mX{+HOqRia&1+7j<= zg*4?i2o%CJ`a*rWz%omj?oo{x0`ezS66>bGGa+8?FY^TIvQ}H~RG`%1-lb3f;g7dN z?p}D(ikHgpKSg>^sE42~HX0Wi`Fe3kzvO3;i{|_)rY4TBkoPYM=?kBK8ymuBC(jE_ Q7`wszc}Milaviz<2k8u8Z2$lO literal 0 HcmV?d00001 diff --git a/libft/ft_strmapi.o b/libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..81a145aea8cfee35ae84cedb0fe7265396b3c831 GIT binary patch literal 1360 zcmbtT&x_Mg5T3MUt-5QwvI~NOy?NT$s)t=!v?9@W*vhg{JcyKRHv0pUbZOI4h3Z08 zHsrGYLq$~VwHKj(K!g@N)LRcioJrryh7eBj5S^&}-pAVh)(aPA2d zV3<0$%Yj*jOUSG;=O^p^Dl(@#Wln26P&|sVUUv$)_m}797;+z$$Q&p$icUU}<94TG z@|ZJVy@AxHV>zIVu)rvu^#Tc#Aj4IrOsjY&n^`=hNHtt#>~=loRxnWYa{YVD{_yk* z!XqM{u4G-s>wT6S#hdhf-xq=JnJndwn4`>4&sgtU@#R;j?zSwuRnQF8Iw-XDM)Rm{ z6-syHqFh=lZM1^uUFrl@f*nA5vjb8mFI``}kUhgmZXiyJ?!d;)p(ANXy=uSV(wy&?9H*T|rz^#?DBWIKYVBY1)1)KRpn zbOz*xZm6=YcWjWgx@qc`4f}SjX*Uer0@&KdkLHR8uFOrW!_Fi)6?e$XM1^cTvAKN&l}{Sb*k?%MKs%Z7dM~R~9f%80n~# zxg+jd#NywMa_Ro#lI7>qV<)+Yiy-lot`Uf`h>L0n9$_S_ywO{8H{3ZK{_{66BCwEz z#%2%~Kw( z_w=v%8H@)!v@o747~RsZ_vVS-xtAz1y6wL}%)yNb(?fZmw}%=p9qXUENPRF*zG!;q z67s`YRn+ckJTQC1Fp8qHp@%sfx;`0tn4i6K9GIif9Bq69YqRBxR?(^2{!Ve%Z8Trh z{GzeM7MZbNlv-of&3KLu^Cpv~u}XFlTMZXr&G><2wouNB^99$cNue8&m` z(v2gWgFjIkn}yi&WkCV`^%y>$g;-JYq`07B!rc?VoSNskzJP5}X^MvLcy(ZYO}OmQ zV{4%)Z09AgYIWDE*jrn;fE{2Bw`w!@d1bp{du~j}9AMZ&*qi8IdF20tS=b|+(q|wq zrJLZAca?HFQ;E8=%+;P0O?!;nG$y29jDr|ok%Mk0a0!n!M9t$-SiE#84NR$BnPBw` z?+&qLsb7va#W;DTN{HnWHI)98`kRs?9epfHukgEwW!It_y0>`FOzmF*N|*dw8(5J1 U?WC#8!e^AAQA+Pw^-=Tx0ec0OOaK4? literal 0 HcmV?d00001 diff --git a/libft/ft_strnstr.o b/libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..bfbe0b766b8ae60fe6488b15c7cd2b8c5c0d358c GIT binary patch literal 1344 zcmb_cL2nX46rN?V#iZ?GgNdddxOvb{x_Xf`sTebL4#k7X9vj@!Z8fq>14~mijU*IP z%Eg$N_!ImUWD^hE0B;<*7}*=%=tX>QcL%n}(U%PK-uJ%my?L{{d|*4<5lJG#B(g=O zkw9UWr+(UV)8slZHD3S8>!(9rFAsQK>+=@tVVYM@heWB}^4&hT%jmY)2(#{E=)oIo zpfpK!M3l1?OhU{z*)X6s7!+kAHvv=^MZA&esSe-F^v_vGsowM@Lxh!PG=_D)IFPzv zoo|v-y9Rl;gQOPg!iM!dGM6)5rMVRI`ZYB06LHl^{WxcBrMB%82T;``sZRBhVCL+8 zs07NVnN>g2<1*{Q0Da{%9HV`~+LL44@EKiRbtD+7>mH5AW4}MP@ef}MSVO4O^G3fd z3j4C2d-(@s!5xBpwELZCdu7WmCv$n-I!qoL#nS77l~f}<&{TCfPU3bsL?J=fMtww`-KXg+^zX7&AjnEjB@ zqLJ6B@hW>z)J-F#qd7uBZtHunzcq3H52itl(5Eq}_%#^Dm>|A`R~$BsaV>;F@Y6vo z?n$Ka9>cZ>0qQrxAoxzu=hOyedV${qOx_t6V5`8In7Drd2;J;hyFi#dJ8F^v_!0v!)Zud$ HbwvNa_wUq< literal 0 HcmV?d00001 diff --git a/libft/ft_strrchr.o b/libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..aa9ce75dd6a55f817cd92eebf58edd5af27cdb3b GIT binary patch literal 1280 zcmb_aL5tH+5S}z;?aHpHq9EuYClz5ss~1;ADiY0M>p>`eNdJy7F`rh^#a`c0jnfd0MdGlW0TXW}ONl`#RfqSru1PgFj zTKSF4ZNO<%wyfx<70zl_G@eI;nH7)czbI`*=CKvyip(S&&p>;3me|;wTWZEGrb8sA znKm3JpdH;6g1DJzlX4|)&a}yo?eG7TCfIN>y|a`iR`@xk9i|`BG^OU+1Xg96q9K)3 zDEMYB(9jqQEBsn}_61tI1D_3a$Fu!?edq@L7d>CE-!N)MeXG7b$g(%FcGo@uDsxM~m=@KKIX5k4g_V*GeBzK}0d0B3*{xX;D@M>9V;%M_VlrUqJ4h zq|atRPRv_IU&ZwYFNmO{PoN#-T~sgv*Ru`gju;qDuiJHf279dCXF=c`1l;vp9}K_8 zT;tK>)>fa{&Py;nZ`f_yoeo~!K5ye5wD$tL>q;FA2Mlb+>|M04yJY_ZI@p8Gm&ZCk z9Lpv0Z+i{%#F3TJ;DNYLk<0%Bs--*58n3@afdnzXpe%HX&Ohh%;+%ATx?@o<_}j>-J82Ki jA+8ft_(0+qR8J7`G6L|>$R-$>J775>S$Jbw`G

S*cue!su081jy+~5$VMPB6W+>xyAg#dw7B8f#ZX+k3Tn;i*GZxmgX}*AOk_V zbO7hbpCB!oC7C1m0+8YnO33OAerX0@2YyoMAFdhLnHl*vfTQHt^A`>VTQ)vU7PNTbkaGZLMn)S#24HX4+)iuD6}dwrz!$ZK*rl5=>n) zS=hFA4I-N@Ta)kHudTH0hWeDqy52GBjjb&>@+O<2?bNrehM@^{vPxtaWH&ZJKQ~bS zx46(j_{8FVpV{U=#3VA3-{?GGWT-`{GKZfhk0tL6*5X+vWsS{$!UD%YBjQ*1EaQuy zu}7KtT%BSIy~qL649EX9cY$*zre05jDY<&Yp0VY|Evl@3Ehdq{*UxbijI{lKWDWT~ wasT*^c|GTkfMqv=7N}S7#PW&N^WIpGlH8ULEV*{f>$1c?Iw0ucJxR|02j7y^761SM literal 0 HcmV?d00001 diff --git a/libft/ft_substr.o b/libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..d811f99805a5a7d06ecaa5bde146442323d10687 GIT binary patch literal 1600 zcmbu8O=uHA6oB70u|{d#qE!S1_a+s(GxJHpd=w%tbWNLp+&-5Z{~3q~kU{`C#_F`QFdWo0)xWP2cO&G?1df zZ8(}q3Q&n0*$HkY;4DU_Sn!?shchfFHG|?I3sQBqZ`CM*`K2c4YlCF&TP;Ej18cLg zRcC=!W#v-yCs7vcBCE2As{Zx@&84H9JY*wPjICp>I_U2V^p-7L#j13JI@uMTeF^>B zw0#!*7NxCL<1>MB35)D&Z1)F9&jD6F2=DL}1~+hEMzR*Ku*qb7-P+Op%N$uv+EXN1 z)3>8BzXkfo3VJuJoh?mYJ4LBC{*Buhj$v;HRBWA_HRe||Y@pWIY`5Fe_bnR31u-tL zTBuvh-p0kjtnKwBNs zt_+-xeZZ5rikt??ES=1qb3^a@?hf`x9%&fDd9TkB!YKS|_wq%c?--s%GIWdrTswhZ zM1EeW!}o^l;R*2xgO5K|1SkBq5Rt2f|COJUD7e=38_M7 zMU1p62{DoPDt+NMLb-HDVc8Ogy(%1MP!p0bmVQT)0UT6gj3$bF5*xj)Ffs-1>Jf#h zp?fk=g*{@YJM5YIHYlYk^2ceSh}^$KQ)u++-w@|7`=tKqjAg#$6UZXd?HsB%IJz<} c@`VD*CkeOp5?OffJW#+bKI!C9t?>GP0emw6djJ3c literal 0 HcmV?d00001 diff --git a/libft/ft_tolower.o b/libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..9fde8fe5784afbb5152326a35d0b549157037a0b GIT binary patch literal 1016 zcmb_bJ4*vW5S~jkD)6fS?c%f`axo z{tQdOKj9y+u(V4d#F@*kuBUbm?0qxe%(t_*b9bIEu0{+4lo^nLuSl@~4;q;b=q!w2 zWvS44>9o4-RyQ|sJ&g(UwkB@I(Ywlb+mB`^|Na{5N9bPV-^))>sy1BFFl)Bu?wL*Q z*AG0`OfIqomP{nmjUc-eG=Zr;fN{17#!1|m866tF#k0&JPm64s9=Y-OWn^V6=3xQF ze^>$e0eI{EmX1Q?2OURdQsaYO$eFT|6yH=#@Dl;7<~a^`1?-B7@NDmx`@mdJaJIHy zO4Nl_I|OFiO{Ze*?BM(F0rR1fVsAJzW@fg@T7 literal 0 HcmV?d00001 diff --git a/libft/ft_toupper.o b/libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..374dad94e7da4daa7644870bf6e21386a1cffcdb GIT binary patch literal 1016 zcmb_bJxc>Y5S>fn7ibd1LeSzm3(1nGMbdcPmSqkYAjA3PU zz5Cof?OmMqtkm^1CeS-c-6YYwD)%m4%x<~=Iy{Kby(;&&AECP2_C(vX9m{K&9Uim} ze9z1+uq?}Ea)ox7T@0JR)BwOZ*#hGzZOn|1jNal|W|5~wwnUHRWco6;GBNC90mXmV zI`Rp4d;cvRhu9A~jm)IRhrN(9WhE)TshHqL0+{W)F82iNiJI`+%_a|kdA{ImZKIlL z3ClhN<~SXE> z{xCx^EgG$EB^juDQaQRu-9|7VeO4#Y7c!oU@T$MU8O$qRFTK+P&5za=2m0o>*&%l? zHF=2&qTf^j6A6{nFfSX?uRun+A&C?#ejfdJ<=sa($MtFI{uQD6M$f;E1<|vU=1B^7 NB$AHitoBj;KL83%T6O>c literal 0 HcmV?d00001 diff --git a/libft/libft.a b/libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..bdc99144f57b78e649223774de9e71b6347911c1 GIT binary patch literal 56580 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/01 10:06:03 by adjoly #+# #+# */ -/* Updated: 2023/11/11 18:37:56 by adjoly ### ########.fr */ +/* Updated: 2024/01/14 15:16:49 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/main.c b/main.c index 5cf2587..400fc86 100644 --- a/main.c +++ b/main.c @@ -6,22 +6,44 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/06 16:18:56 by adjoly #+# #+# */ -/* Updated: 2024/01/13 19:01:34 by adjoly ### ########.fr */ +/* Updated: 2024/01/19 14:44:15 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft/libft.h" +#include "MacroLibX/includes/mlx.h" +#include "printf/ft_printf.h" #include "so_long.h" +void ft_freeimg(t_window *win) +{ + while (*win->img) + { + mlx_destroy_image(win, *win->img); + win->img++; + } + free(win->img); + return ; +} + +size_t ft_sizemap(char **map) +{ + size_t i; + + i = 0; + while (*map) + { + map++; + i++; + } + return (i); +} + void ft_freemap(char **map) { - int i; - - i = 0; - while (map[i]) + while (*map) { - free(map[i]); - i++; + free(*map); + map++; } free(map); } @@ -35,39 +57,77 @@ int win_close(int event, void *param) void ft_exit(t_window *win) { - mlx_destroy_image(win->mlx, win->img); mlx_destroy_window(win->mlx, win->win); mlx_destroy_display(win->mlx); ft_freemap(win->map); + ft_freeimg(win); free(win->p_coords); free(win->e_coords); free(win); + exit (0); } int main(int ac, char **av) { t_window *win; char **map; + void **img; + t_coords *map_size; (void) ac; (void) av; + map = NULL; + if (ft_valid_file_ext(av[1]) == 1) + ft_send_error("Invalid map file extension (not .ber)\n", map); map = ft_read_map(av[1]); - win = malloc(sizeof(map) + sizeof(t_window)); + if (!map) + return (0); + ft_check_map_error(map); + map_size = malloc(sizeof(t_coords)); + if (!map_size) + { + ft_freemap(map); + return (0); + } + map_size->x = ft_strlen(map[0]); + map_size->y = ft_sizemap(map); + ft_printf("x: %d\n", map_size->x); + ft_printf("y: %d\n", map_size->y); + img = malloc((map_size->x * map_size->y) * sizeof(void *)); + if (!img) + { + free(map_size); + ft_freemap(map); + return (0); + } + win = malloc(sizeof(map) + sizeof(t_window) + sizeof(img)); + win->img = img; + if (!win) + { + ft_freemap(map); + return (0); + } win->mlx = mlx_init(); + if (!win->mlx) + { + // free map img win; + return (0); + } win->win = mlx_new_window(win->mlx, 1600, 900, "so_fluffy"); + if (!win->win) + { + // free map img win ; destroy mlx + return (0); + } win->map = map; + win->map_size = map_size; + win->p_coords = malloc(sizeof(t_coords)); + win->e_coords = malloc(sizeof(t_coords)); win->mov_count = 0; mlx_on_event(win->mlx, win->win, MLX_WINDOW_EVENT, win_close, win->mlx); mlx_on_event(win->mlx, win->win, MLX_KEYDOWN, ft_key_event, win); - // mlx_loop_hook(win->mlx, win_update, win); ft_printmap(win->map, win); mlx_loop(win->mlx); - mlx_destroy_image(win->mlx, win->img); - mlx_destroy_window(win->mlx, win->win); - mlx_destroy_display(win->mlx); - ft_freemap(win->map); - free(win->p_coords); - free(win->e_coords); - free(win); + ft_exit(win); return (0); } diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..1af18714bc89c7ba28531cee47337f0c9796aa71 GIT binary patch literal 8424 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 literal 0 HcmV?d00001 diff --git a/print_map.c b/print_map.c index 61fbeac..e559653 100644 --- a/print_map.c +++ b/print_map.c @@ -6,39 +6,44 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/09 15:30:06 by adjoly #+# #+# */ -/* Updated: 2024/01/13 17:56:32 by adjoly ### ########.fr */ +/* Updated: 2024/01/19 14:43:12 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "MacroLibX/includes/mlx.h" -#include "libft/libft.h" -#include "printf/ft_printf.h" #include "so_long.h" -#include -#include + +void ft_putplayer(t_window *win) +{ + ft_putimg(win->p_coords->x, win->p_coords->y, win, P_PNG); +} void ft_putimg(size_t x, size_t y, t_window *win, char *file_path) { - int img_x; - int img_y; + int img_x; + int img_y; + size_t img_xy; img_x = 0; img_y = 0; + img_xy = x + (y * win->map_size->x); + ft_printf("%d\n", img_xy); + if (win->img[img_xy]) + mlx_destroy_image(win->mlx, win->img[img_xy]); ft_putstr_fd(file_path, 1); ft_putchar_fd('\n', 1); - win->img = mlx_png_file_to_image(win->mlx, file_path, &img_x, &img_y); - mlx_put_image_to_window(win->mlx, win->win, win->img, x * img_x, y * img_y); + win->img[img_xy] = mlx_png_file_to_image(win->mlx, file_path, &img_x, &img_y); + mlx_put_image_to_window(win->mlx, win->win, win->img[img_xy], x * img_x, y * img_y); } void ft_printmap(char **map, t_window *win) { - int x; - int y; + size_t x; + size_t y; y = 0; - // win->c_count = malloc(1 * sizeof(size_t)); win->c_count = 0; - while (map[y]) + while (map[y] != NULL && y < ULONG_MAX) { x = 0; while (map[y][x]) @@ -54,18 +59,17 @@ void ft_printmap(char **map, t_window *win) } else if (map[y][x] == 'E') { - win->e_coords = malloc(sizeof(t_coords *)); win->e_coords->x = x; win->e_coords->y = y; ft_putimg(x, y, win, E_PNG); } else if (map[y][x] == 'P') { - win->p_coords = malloc(sizeof(t_coords *)); win->p_coords->y = y; win->p_coords->x = x; ft_putimg(x, y, win, P_PNG); } + x++; } y++; diff --git a/print_map.o b/print_map.o new file mode 100644 index 0000000000000000000000000000000000000000..9b53c48d8ad7a82410e86b4d0b74944ab048389d GIT binary patch literal 6208 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 literal 0 HcmV?d00001 diff --git a/printf/ft_putchar.o b/printf/ft_putchar.o new file mode 100644 index 0000000000000000000000000000000000000000..e31b0fe8b4ad72b16b780769693dd12e8882895a GIT binary patch literal 1136 zcmb_aJxc>Y5S>ecUqm@XK~Uj38(k7@w2_Ek5rT!1QsQ|zli=MYT=q2DC;haf!XSuDtfaQYRkCvu55s5p~aACeTOX=LZ=RDml!bLc1*_Y8V6>TUDx(F9P(Tx z;8xM}fq7+av(4@7T$P*F5irL&c5`Mvk5enaiC^Nj*upO64t>+Lm1<@It8$;42gs)` z@jqc7_lfq{>y&;oqSB)FSIBL@4=vJ&RiuO?=PYBLv!+^_Zzs~C(S!&LBGbI(n~-`O zHA+q3QsD?^MitQ(+qT(IG&S{Bbrf6HOKA%Y)GF#*pxB*ASQIQto?rTFX!N@OzGx)x wN%yB2%X+EPy`!11jC6skjhd*J=cRgr^jjW45sl8XQ|v_~)C5xM{2b}6bcFkiYQ3dTz%08B~niBA&M08sNs@a+G27kmrWampl~2L zLLnc(44@I?d*zO)UPhd`XU>?X&Wyg0BsJHMIV?99&HQzLylqG=#S zgPSn2BnogTIy$F=w$lu z&Aibuwa>oM(RVK!J>Tf=&!DFj9KA+&Zoy-L-Su{pP2*^gYo~TJAVLG*S-d3LkLotz8Isc@U!xtB>)xs`te ztW?@6XRSg3hqVUV?gqC-275hQbgi;IBC|ZODtEb+L;biMXtz?ZxJ9teWYeOy|4|Q- z6n;mUH)yugx@DD(vpcu~Ps{&~Sy!XPaJ6^9C&1OBF3=Y0`)P2tP_CA@-% zaqrg_3FSM{`_1B#e2HH{ESm0DP(8ynl$U}p>mojhT7MBS850DEttkTA!X}gIRPX-_ Dw6Mn( literal 0 HcmV?d00001 diff --git a/printf/ft_putnbrbase.o b/printf/ft_putnbrbase.o new file mode 100644 index 0000000000000000000000000000000000000000..b8ef8dcf8189a1d590a28c022cc959b8bf21d597 GIT binary patch literal 1760 zcmb`G&1(}u6u@VbG=5NR5Cx$g_99;Fnp7`R(THpvq@tZJJfS~YkCKb)Nl0I!qdCHzB8kDCz{iY zyFJ)vzHYl+?+aBvzQMCz;S|Jq?`To)P-WfIJ6p4Whu&+{cY~a9y#rR<4vl|H<%56o zgL?CQOVmrfMn5RH4X2C>rmK`C*ZXuv?@TmLF{9g~zTVG#@;=jT7s~q{S$CV&-QK#) zVkCc0F23#QZ7lvDGWrm~$|t#kYdNl3EF0E>x@6k*#j2%drnR(|naZ4Yne`-I=parY z%KfWESxzaF3Y_n`=j=Ag*tyry8 zOv@o9Ctq_Nt6&$5x|y%xzV6s%(;}KxbxiHzmE2U_F^YGHRxU49^2Yo;ys8Cq*IsnY z-=lec^LD;u8=@|GL+fJOwr5R=1PkAub>X}%Zg89(=!09=c5ggyaWtYz14Q82={6tJ57 zhA_`2kH3K%Nkshu8L)`D|0?glxEJ0Zdo1F`{m%i5&kgYRT7fZ?bsjHrV?0XuT91H* SYe&B{hfi<=f^nEKeEu&^RXm^o literal 0 HcmV?d00001 diff --git a/printf/ft_putstr.o b/printf/ft_putstr.o new file mode 100644 index 0000000000000000000000000000000000000000..410f795906b80cb4f611d37dadba860fc4581f4f GIT binary patch literal 1384 zcmbtSPiqrF6n~r8KWMc<6a)qLBBqCq-Fm5@5-Fp5s2&PA*09}dYUyS-Y-Vc}f`zCM z;-P*EKSK{HD6Lm-egUC{J;Zw;zBidMLz1)}+Fz{>&rXj9g8^C{-tY3h+x~8Ed@Dw2 z7%l*mH`7R@wjX-Ymc1J!&Fwg{on^MfoJHqeDo^hMT%qC!>-9QVdj;$I+|29&R=R;4 zEy73I9$hND&#hjZ&V4`+A|_)U>2vUBFzGZ8#t;pMJVuP;DiW6sf7t_a4{#O6ozbRg z6KF_zsSP*0q6Af#!qvx#5gJ2URyKKC@zkl=?G&&i2t6i(Jps&*>-8WKP!p9#Dw-kz z7R4f9Po9+*o5J&VfQ8|1z2a4?IQT7inQV(dWe8qWYKd15M#0PnhB<_{iSkul$|SCO z!Xw&Yj_T=u#B&Tb=c02hs7tmqp(M@G1pQXxNSY`qL%)wc8-F8;J^RW4KU5)C1)fJq zE$J_IP4N**a$Q!o7C)6TqX{KdS{Xys94_LP$T09r>9-Az)baS624}iX{OA*W>3*2A zVg4zZM-^HzlcKKgujy4(Ce5#)66!h8{AdH1La62^*LVuFQy}tkN^Mx literal 0 HcmV?d00001 diff --git a/printf/ft_strlen.o b/printf/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..0bbb64d68366066fa8c98a0b4d25754df39a605e GIT binary patch literal 1016 zcmb<-^>JfjWMqH=Mg}_u1P><4z_0^J&;cy$z`zMq8S2sb)T6WZ$8py$AW@HQ*B>6q zzF!(_I2ia__<$nau3wrDFm}3rdHLY~|NkDzu3usgGlV9U=9QExBKa;>f@O`twupd91_s8eAO^+?0Y+&ac8&=^x5xm+K^O!~L4+fpKpT@Y zFIxdn0f>(SxC6ym7(V{TCe6&igdr>d6cIua2ipY{Q-G=j=|It?SCU#$!l0L&pPQSS zSHh515?@?Wl#`mrpqH0llB(zK7phxal9-&$pqGA3;bm;j|g`atmvGY4ir05JGl3;+NC literal 0 HcmV?d00001 diff --git a/printf/libftprintf.a b/printf/libftprintf.a new file mode 100644 index 0000000000000000000000000000000000000000..93ec406797912ba2722f65c872a30462ed0944b2 GIT binary patch literal 11374 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 literal 0 HcmV?d00001 diff --git a/so_long b/so_long new file mode 100755 index 0000000000000000000000000000000000000000..ae2bf940b63863a9a6f2dcfa369e005b68a380a0 GIT binary patch literal 36064 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 CFp#_e literal 0 HcmV?d00001 diff --git a/so_long.h b/so_long.h index e8c9da5..a6de367 100644 --- a/so_long.h +++ b/so_long.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/06 16:19:42 by adjoly #+# #+# */ -/* Updated: 2024/01/13 19:00:01 by adjoly ### ########.fr */ +/* Updated: 2024/01/19 14:34:31 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,21 +38,28 @@ typedef struct s_window { void *mlx; void *win; - void *img; + void **img; char **map; t_coords *p_coords; t_coords *e_coords; size_t c_count; size_t mov_count; + t_coords *map_size; } t_window; int ft_key_event(int key, void *param); +void ft_freemap(char **map); int check_wall(char **map, t_coords *player); -int ft_countline_fd(int fd); +size_t ft_countline_fd(int fd); char **ft_read_map(char *file_name); void ft_printmap(char **map, t_window *win); void ft_putimg(size_t x, size_t y, t_window *win, char *file_path); +void ft_check_map_error(char **map); + +char ft_valid_file_ext(char *file_name); +void ft_send_error(char *msg, char **map); +void ft_check_map_error(char **map); #endif \ No newline at end of file