Add additional size assertions for msdfgen::Range and use pointer magic to convert msdf_range_t into msdfgen::Range

This commit is contained in:
KitsuneAlex 2024-05-02 13:45:48 +02:00
parent f041dd492c
commit df74428a86
No known key found for this signature in database
GPG Key ID: 6B0CE864BB69B7D0
1 changed files with 9 additions and 16 deletions

View File

@ -29,6 +29,7 @@
namespace { namespace {
static_assert(sizeof(msdfgen::Point2) == sizeof(msdfgen::Vector2)); static_assert(sizeof(msdfgen::Point2) == sizeof(msdfgen::Vector2));
static_assert(sizeof(msdfgen::Vector2) == sizeof(msdf_vector2_t)); static_assert(sizeof(msdfgen::Vector2) == sizeof(msdf_vector2_t));
static_assert(sizeof(msdfgen::Range) == sizeof(msdfgen::Point2));
using SDFBitmap = msdfgen::Bitmap<float>; using SDFBitmap = msdfgen::Bitmap<float>;
using SDFBitmapRef = msdfgen::BitmapRef<float>; using SDFBitmapRef = msdfgen::BitmapRef<float>;
@ -570,8 +571,7 @@ int msdf_generate_sdf(msdf_bitmap_t* output, msdf_shape_handle shape, const msdf
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
msdfgen::generateSDF(*static_cast<SDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform); msdfgen::generateSDF(*static_cast<SDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform);
return MSDF_SUCCESS; return MSDF_SUCCESS;
} }
@ -585,8 +585,7 @@ int msdf_generate_psdf(msdf_bitmap_t* output, msdf_shape_handle shape, const msd
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
msdfgen::generatePSDF(*static_cast<PSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform); msdfgen::generatePSDF(*static_cast<PSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform);
return MSDF_SUCCESS; return MSDF_SUCCESS;
} }
@ -600,8 +599,7 @@ int msdf_generate_msdf(msdf_bitmap_t* output, msdf_shape_handle shape, const msd
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
msdfgen::generateMSDF(*static_cast<MSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform); msdfgen::generateMSDF(*static_cast<MSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform);
return MSDF_SUCCESS; return MSDF_SUCCESS;
} }
@ -615,8 +613,7 @@ int msdf_generate_mtsdf(msdf_bitmap_t* output, msdf_shape_handle shape, const ms
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
msdfgen::generateMTSDF(*static_cast<MTSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform); msdfgen::generateMTSDF(*static_cast<MTSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform);
return MSDF_SUCCESS; return MSDF_SUCCESS;
} }
@ -633,8 +630,7 @@ int msdf_generate_sdf_with_config(msdf_bitmap_t* output,
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
const msdfgen::GeneratorConfig actual_config(config->overlap_support == MSDF_TRUE); const msdfgen::GeneratorConfig actual_config(config->overlap_support == MSDF_TRUE);
msdfgen::generateSDF(*static_cast<SDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform, msdfgen::generateSDF(*static_cast<SDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform,
actual_config); actual_config);
@ -653,8 +649,7 @@ int msdf_generate_psdf_with_config(msdf_bitmap_t* output,
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
const msdfgen::GeneratorConfig actual_config(config->overlap_support == MSDF_TRUE); const msdfgen::GeneratorConfig actual_config(config->overlap_support == MSDF_TRUE);
msdfgen::generatePSDF(*static_cast<PSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform, msdfgen::generatePSDF(*static_cast<PSDFBitmap*>(output->handle), *reinterpret_cast<const msdfgen::Shape*>(shape), actual_transform,
actual_config); actual_config);
@ -673,8 +668,7 @@ int msdf_generate_msdf_with_config(msdf_bitmap_t* output,
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
const msdfgen::ErrorCorrectionConfig error_correction_config( const msdfgen::ErrorCorrectionConfig error_correction_config(
static_cast<msdfgen::ErrorCorrectionConfig::Mode>(config->mode), static_cast<msdfgen::ErrorCorrectionConfig::Mode>(config->mode),
static_cast<msdfgen::ErrorCorrectionConfig::DistanceCheckMode>(config->distance_check_mode), config->min_deviation_ratio, static_cast<msdfgen::ErrorCorrectionConfig::DistanceCheckMode>(config->distance_check_mode), config->min_deviation_ratio,
@ -697,8 +691,7 @@ int msdf_generate_mtsdf_with_config(msdf_bitmap_t* output,
} }
const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale), const msdfgen::Projection projection(*reinterpret_cast<const msdfgen::Vector2*>(&transform->scale),
*reinterpret_cast<const msdfgen::Vector2*>(&transform->translation)); *reinterpret_cast<const msdfgen::Vector2*>(&transform->translation));
const msdfgen::Range dist_mapping(transform->distance_mapping.lower, transform->distance_mapping.upper); const msdfgen::SDFTransformation actual_transform(projection, *reinterpret_cast<const msdfgen::Range*>(&transform->distance_mapping));
const msdfgen::SDFTransformation actual_transform(projection, dist_mapping);
const msdfgen::ErrorCorrectionConfig error_correction_config( const msdfgen::ErrorCorrectionConfig error_correction_config(
static_cast<msdfgen::ErrorCorrectionConfig::Mode>(config->mode), static_cast<msdfgen::ErrorCorrectionConfig::Mode>(config->mode),
static_cast<msdfgen::ErrorCorrectionConfig::DistanceCheckMode>(config->distance_check_mode), config->min_deviation_ratio, static_cast<msdfgen::ErrorCorrectionConfig::DistanceCheckMode>(config->distance_check_mode), config->min_deviation_ratio,