mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	 4c3f7d1290
			
		
	
	
		4c3f7d1290
		
	
	
	
	
		
			
			Adds multi-channel SDF font texture generation and rendering support. Adds per-font oversampling support. Adds FontData import plugins (for dynamic fonts, BMFonts and monospaced image fonts), font texture cache pre-generation and loading. Adds BMFont binary format and outline support.
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "Projection.h"
 | |
| #include "Shape.h"
 | |
| #include "BitmapRef.hpp"
 | |
| 
 | |
| namespace msdfgen {
 | |
| 
 | |
| /// Performs error correction on a computed MSDF to eliminate interpolation artifacts. This is a low-level class, you may want to use the API in msdf-error-correction.h instead.
 | |
| class MSDFErrorCorrection {
 | |
| 
 | |
| public:
 | |
|     /// Stencil flags.
 | |
|     enum Flags {
 | |
|         /// Texel marked as potentially causing interpolation errors.
 | |
|         ERROR = 1,
 | |
|         /// Texel marked as protected. Protected texels are only given the error flag if they cause inversion artifacts.
 | |
|         PROTECTED = 2
 | |
|     };
 | |
| 
 | |
|     MSDFErrorCorrection();
 | |
|     explicit MSDFErrorCorrection(const BitmapRef<byte, 1> &stencil, const Projection &projection, double range);
 | |
|     /// Sets the minimum ratio between the actual and maximum expected distance delta to be considered an error.
 | |
|     void setMinDeviationRatio(double minDeviationRatio);
 | |
|     /// Sets the minimum ratio between the pre-correction distance error and the post-correction distance error.
 | |
|     void setMinImproveRatio(double minImproveRatio);
 | |
|     /// Flags all texels that are interpolated at corners as protected.
 | |
|     void protectCorners(const Shape &shape);
 | |
|     /// Flags all texels that contribute to edges as protected.
 | |
|     template <int N>
 | |
|     void protectEdges(const BitmapConstRef<float, N> &sdf);
 | |
|     /// Flags all texels as protected.
 | |
|     void protectAll();
 | |
|     /// Flags texels that are expected to cause interpolation artifacts based on analysis of the SDF only.
 | |
|     template <int N>
 | |
|     void findErrors(const BitmapConstRef<float, N> &sdf);
 | |
|     /// Flags texels that are expected to cause interpolation artifacts based on analysis of the SDF and comparison with the exact shape distance.
 | |
|     template <template <typename> class ContourCombiner, int N>
 | |
|     void findErrors(const BitmapConstRef<float, N> &sdf, const Shape &shape);
 | |
|     /// Modifies the MSDF so that all texels with the error flag are converted to single-channel.
 | |
|     template <int N>
 | |
|     void apply(const BitmapRef<float, N> &sdf) const;
 | |
|     /// Returns the stencil in its current state (see Flags).
 | |
|     BitmapConstRef<byte, 1> getStencil() const;
 | |
| 
 | |
| private:
 | |
|     BitmapRef<byte, 1> stencil;
 | |
|     Projection projection;
 | |
|     double invRange;
 | |
|     double minDeviationRatio;
 | |
|     double minImproveRatio;
 | |
| 
 | |
| };
 | |
| 
 | |
| }
 |