diff options
| author | Mattias Andrée <maandree@kth.se> | 2023-01-08 22:19:02 +0100 | 
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2023-01-08 22:19:02 +0100 | 
| commit | 603142e23528061e7ba5bdbcb466e676237745a8 (patch) | |
| tree | cbcff6a1032d056e1e7b87846fdcc96248b932a7 | |
| parent | Partially implement libfonts_get_default_font, libfonts_get_{default,output}_rendering_settings (diff) | |
| download | libfonts-603142e23528061e7ba5bdbcb466e676237745a8.tar.gz libfonts-603142e23528061e7ba5bdbcb466e676237745a8.tar.bz2 libfonts-603142e23528061e7ba5bdbcb466e676237745a8.tar.xz | |
Fix warnings
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | common.h | 17 | ||||
| -rw-r--r-- | libfonts.h | 31 | ||||
| -rw-r--r-- | libfonts_calculate_subpixel_order.c | 22 | ||||
| -rw-r--r-- | libfonts_decode_font_description.c | 8 | ||||
| -rw-r--r-- | libfonts_get_default_font.c | 5 | ||||
| -rw-r--r-- | libfonts_get_default_font_name.c | 2 | ||||
| -rw-r--r-- | libfonts_get_output_dpi.c | 39 | ||||
| -rw-r--r-- | libfonts_get_subpixel_order_class.c | 14 | ||||
| -rw-r--r-- | libfonts_parse_double__.c | 2 | ||||
| -rw-r--r-- | libfonts_unget_subpixel_order_class.c | 40 | 
10 files changed, 111 insertions, 69 deletions
| @@ -15,6 +15,7 @@  #define DOUBLE_TOLERANCE 0.000001 +  #define LIST_RENDERING_SETTINGS(X, _)\  	X(0, "dpi-x", dpi_x, 96, libfonts_parse_double__) _\  	X(1, "dpi-y", dpi_y, 96, libfonts_parse_double__) _\ @@ -43,12 +44,21 @@ transform(double *x_out, double *y_out, double x, double y, const struct libfont  } +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunsuffixed-float-constants" +#endif +  static inline int  eq(double a, double b)  {  	return b - DOUBLE_TOLERANCE <= a && a <= b + DOUBLE_TOLERANCE;  } +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic pop +#endif +  const char *libfonts_getenv__(const char *name, struct libfonts_context *ctx);  char *libfonts_gethome__(struct libfonts_context *ctx); @@ -66,9 +76,14 @@ int libfonts_parse_aa__(enum libfonts_antialiasing *outp, const char *value);  # define ASSERT(ASSERTION)\  	do {\  		if (!(ASSERTION)) {\ -			fprintf(stderr, "Failed assertion at line %u: %s\n", __LINE__, #ASSERTION);\ +			fprintf(stderr, "Failed assertion at line %i: %s\n", __LINE__, #ASSERTION);\  			exit(1);\  		}\  	} while (0) + +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wassign-enum" +#endif +  #endif @@ -12,6 +12,12 @@  #define LIBFONTS_CONTEXT_VERSION 0 +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wpadded" +#endif + +  /**   * Style-based default fonts   */ @@ -1243,12 +1249,6 @@ struct libfonts_rendering_settings {  	uint32_t reference_height;  	/** -	 * The output device's physical subpixel order, -	 * when it is not rotated -	 */ -	enum libfonts_subpixel_order subpixel_order; - -	/**  	 * If the product of the applicable pixel densities  	 * (horizontal and vertical) is less than this  	 * value, the antialiasing mode shall downgrade @@ -1268,6 +1268,12 @@ struct libfonts_rendering_settings {  	double min_dpsqi_for_subpixel;  	/** +	 * The output device's physical subpixel order, +	 * when it is not rotated +	 */ +	enum libfonts_subpixel_order subpixel_order; + +	/**  	 * Antialiasing mode for horizontal (on unrotated output), grey text  	 */  	enum libfonts_antialiasing horizontal_grey_text_antialiasing; @@ -1343,14 +1349,14 @@ struct libfonts_output {  	int output_screen;  	/** -	 * Transformation that is applied to the output +	 * The output's subpixel order, disregarding applied rotation  	 */ -	struct libfonts_transformation output_transformation; +	enum libfonts_subpixel_order unrotated_subpixel_order;  	/** -	 * The output's subpixel order, disregarding applied rotation +	 * Transformation that is applied to the output  	 */ -	enum libfonts_subpixel_order unrotated_subpixel_order; +	struct libfonts_transformation output_transformation;  	/**  	 * The output's horizontal pixel density (pixels per inch), @@ -1619,6 +1625,11 @@ struct libfonts_context {  }; +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + +  /**   * `NULL`-terminated list of environment variables   * that affect the execution of the library diff --git a/libfonts_calculate_subpixel_order.c b/libfonts_calculate_subpixel_order.c index 81a58f6..5727fc9 100644 --- a/libfonts_calculate_subpixel_order.c +++ b/libfonts_calculate_subpixel_order.c @@ -19,15 +19,11 @@ libfonts_calculate_subpixel_order(enum libfonts_subpixel_order unrotated, const  	double x[4], y[4], xmin, ymin, xmax, ymax, t1, t2;  	int trans, i, j; -	switch (unrotated) { -	case LIBFONTS_SUBPIXEL_ORDER_UNKNOWN: -	case LIBFONTS_SUBPIXEL_ORDER_NONRGB: -	case LIBFONTS_SUBPIXEL_ORDER_NONLINEAR: -	case LIBFONTS_SUBPIXEL_ORDER_OTHER: +	if (unrotated == LIBFONTS_SUBPIXEL_ORDER_UNKNOWN || +	    unrotated == LIBFONTS_SUBPIXEL_ORDER_NONRGB || +	    unrotated == LIBFONTS_SUBPIXEL_ORDER_NONLINEAR || +	    unrotated == LIBFONTS_SUBPIXEL_ORDER_OTHER)  		return unrotated; -	default: -		break; -	}  	for (i = 0; i < 3; i++)  		for (j = 0; j < 3; j++) @@ -108,7 +104,7 @@ known:  		if (unrotated <= LIBFONTS_SUBPIXEL_ORDER_G_R_B)  			return unrotated ^ 1;  		else -			return 7 - (unrotated & 7) + (unrotated & ~7); +			return 7 - (unrotated & 7) + (unrotated & (enum libfonts_subpixel_order)~7U);  	case FLOPPED:  		if (unrotated <= LIBFONTS_SUBPIXEL_ORDER_G_R_B) @@ -126,7 +122,7 @@ known:  		return unrotated;  	default: -		return ((unrotated + trans) & 3) + (unrotated & ~3); +		return (enum libfonts_subpixel_order)((((int)unrotated + trans) & 3) + ((int)unrotated & ~3));  	}  } @@ -250,9 +246,9 @@ test(int xtrans, int ytrans, int zscale, int xscale, int yscale)  			{-xscale,       0, ytrans},  			{      0,       0, zscale}}};  	struct libfonts_transformation nonlinear_matrix = {.m = { -			{+xscale, +yscale / 2., xtrans}, -			{      0, +yscale,      ytrans}, -			{      0,       0,      zscale}}}; +			{+xscale, +yscale / (double)2, xtrans}, +			{      0, +yscale,             ytrans}, +			{      0,       0,             zscale}}};  	struct libfonts_transformation unknown_matrix = {.m = {  			{0, 0, 0},  			{0, 0, 0}, diff --git a/libfonts_decode_font_description.c b/libfonts_decode_font_description.c index 2348d97..74a9571 100644 --- a/libfonts_decode_font_description.c +++ b/libfonts_decode_font_description.c @@ -123,16 +123,16 @@ fix_charset_subset(char *out, const char *in)  				saved.last = ranges[i].last;  		} else {  			if (saved.first == saved.last) -				out += sprintf(out, "%"PRId32" ", saved.first); +				out += sprintf(out, "%"PRIu32" ", saved.first);  			else -				out += sprintf(out, "%"PRId32"-%"PRId32" ", saved.first, saved.last); +				out += sprintf(out, "%"PRIu32"-%"PRIu32" ", saved.first, saved.last);  			saved = ranges[i];  		}  	}  	if (saved.first == saved.last) -		out += sprintf(out, "%"PRId32" ", saved.first); +		out += sprintf(out, "%"PRIu32" ", saved.first);  	else -		out += sprintf(out, "%"PRId32"-%"PRId32" ", saved.first, saved.last); +		out += sprintf(out, "%"PRIu32"-%"PRIu32" ", saved.first, saved.last);  	out[-1] = '\0';  	return 0; diff --git a/libfonts_get_default_font.c b/libfonts_get_default_font.c index f8809bc..69d2729 100644 --- a/libfonts_get_default_font.c +++ b/libfonts_get_default_font.c @@ -6,6 +6,11 @@  static int  find(char **outp, const char *dir_part1, const char *dir_part2, const char *dir_part3, struct libfonts_context *ctx)  { +	(void) outp; +	(void) dir_part1; +	(void) dir_part2; +	(void) dir_part3; +	(void) ctx;  	return 0; /* TODO */  } diff --git a/libfonts_get_default_font_name.c b/libfonts_get_default_font_name.c index 66d14cb..877f44c 100644 --- a/libfonts_get_default_font_name.c +++ b/libfonts_get_default_font_name.c @@ -67,7 +67,7 @@ main(void)  	} while (0)  	errno = 0; -	ASSERT(libfonts_get_default_font_name(-1, 0, &r) == -1); +	ASSERT(libfonts_get_default_font_name((enum libfonts_default_font)~1, 0, &r) == -1);  	ASSERT(errno == EINVAL);  	errno = 0; diff --git a/libfonts_get_output_dpi.c b/libfonts_get_output_dpi.c index 6377fb9..c56cc49 100644 --- a/libfonts_get_output_dpi.c +++ b/libfonts_get_output_dpi.c @@ -100,8 +100,8 @@ libfonts_get_output_dpi(struct libfonts_output *output, const char *edid)  		if (!width || !height)  			return 0; -		output->dpi_x = (double)output->unrotated_output_width  / (double)width  * 2.54; -		output->dpi_y = (double)output->unrotated_output_height / (double)height * 2.54; +		output->dpi_x = (double)output->unrotated_output_width  / (double)width  * 254 / 100; +		output->dpi_y = (double)output->unrotated_output_height / (double)height * 254 / 100;  	}  	if (!invert(&invtrans, &output->output_transformation)) { @@ -155,6 +155,17 @@ main(void)  #define ASIS(MAT) T(MAT, 100, 150)  #define SWAPS(MAT) T(MAT, 150, 100) +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunsuffixed-float-constants" +#endif + +	const double sqrt1half = 0.7071067811865475; + +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic pop +#endif +  	char edid[512];  	struct libfonts_output output;  	struct libfonts_transformation asis_matrix = {.m = { @@ -222,9 +233,9 @@ main(void)  			{+1, +1, 0},  			{ 0,  0, 1}}};  	struct libfonts_transformation rot45cw_matrix = {.m = { -			{+0.7071067811865475, -0.7071067811865475, 0}, -			{+0.7071067811865475, +0.7071067811865475, 0}, -			{ 0,                   0,                  1}}}; +			{+sqrt1half, -sqrt1half, 0}, +			{+sqrt1half, +sqrt1half, 0}, +			{ 0,          0,         1}}};  	struct libfonts_transformation uninvertable_matrix = {.m = {  			{1, 1, 0},  			{1, 1, 0}, @@ -254,7 +265,7 @@ main(void)  	T(xshear_matrix, 150, 150); /* not important */  	T(yshear_matrix, 100, 150); /* not important */ -	T(rot45cw_matrix, 150 * 0.7071067811865475, 150 * 0.7071067811865475); /* not important */ +	T(rot45cw_matrix, 150 * sqrt1half, 150 * sqrt1half); /* not important */  	T_(uninvertable_matrix, 0, 0, 0);  	T_(null_matrix, 0, 0, 0); @@ -367,8 +378,8 @@ main(void)  	edid[256] = '\0';  	memcpy(&output.output_transformation, &asis_matrix, sizeof(struct libfonts_transformation));  	ASSERT(libfonts_get_output_dpi(&output, edid) == 1); -	ASSERT(eq(output.dpi_x, 2.54 * 400 / 0xAA)); -	ASSERT(eq(output.dpi_y, 2.54 * 500 / 0xAA)); +	ASSERT(eq(output.dpi_x, (double)254 / 100 * 400 / 0xAA)); +	ASSERT(eq(output.dpi_y, (double)254 / 100 * 500 / 0xAA));  	output.unrotated_output_width = 400;  	output.unrotated_output_height = 500; @@ -383,8 +394,8 @@ main(void)  	edid[256] = '\0';  	memcpy(&output.output_transformation, &asis_matrix, sizeof(struct libfonts_transformation));  	ASSERT(libfonts_get_output_dpi(&output, edid) == 1); -	ASSERT(eq(output.dpi_x, 2.54 * 400 / 0x99)); -	ASSERT(eq(output.dpi_y, 2.54 * 500 / 0x88)); +	ASSERT(eq(output.dpi_x, (double)254 / 100 * 400 / 0x99)); +	ASSERT(eq(output.dpi_y, (double)254 / 100 * 500 / 0x88));  	output.unrotated_output_width = 400;  	output.unrotated_output_height = 500; @@ -399,8 +410,8 @@ main(void)  	edid[256] = '\0';  	memcpy(&output.output_transformation, &rot90cw_matrix, sizeof(struct libfonts_transformation));  	ASSERT(libfonts_get_output_dpi(&output, edid) == 1); -	ASSERT(eq(output.dpi_y, 2.54 * 400 / 0x99)); -	ASSERT(eq(output.dpi_x, 2.54 * 500 / 0x88)); +	ASSERT(eq(output.dpi_y, (double)254 / 100 * 400 / 0x99)); +	ASSERT(eq(output.dpi_x, (double)254 / 100 * 500 / 0x88));  	output.unrotated_output_width = 400;  	output.unrotated_output_height = 500; @@ -415,8 +426,8 @@ main(void)  	edid[400] = '\0';  	memcpy(&output.output_transformation, &rot90cw_matrix, sizeof(struct libfonts_transformation));  	ASSERT(libfonts_get_output_dpi(&output, edid) == 1); -	ASSERT(eq(output.dpi_y, 2.54 * 400 / 0x99)); -	ASSERT(eq(output.dpi_x, 2.54 * 500 / 0x88)); +	ASSERT(eq(output.dpi_y, (double)254 / 100 * 400 / 0x99)); +	ASSERT(eq(output.dpi_x, (double)254 / 100 * 500 / 0x88));  	return 0;  } diff --git a/libfonts_get_subpixel_order_class.c b/libfonts_get_subpixel_order_class.c index 2c6e3bc..10d441c 100644 --- a/libfonts_get_subpixel_order_class.c +++ b/libfonts_get_subpixel_order_class.c @@ -11,18 +11,18 @@ libfonts_get_subpixel_order_class(enum libfonts_subpixel_order order,  {  	enum libfonts_subpixel_colour c1, c2, c3;  	enum libfonts_subpixel_order_class layout; -	int i; /* RGB, RBG, GRB, GBR, BRG, BGR */ +	unsigned int i; /* RGB, RBG, GRB, GBR, BRG, BGR */  	if (order >= LIBFONTS_SUBPIXEL_ORDER_RGB && order <= LIBFONTS_SUBPIXEL_ORDER_G_R_B) {  		layout = ((order - LIBFONTS_SUBPIXEL_ORDER_RGB) & 1) + LIBFONTS_SUBPIXEL_ORDER_CLASS_123; -		i = (order - LIBFONTS_SUBPIXEL_ORDER_RGB) / 2; -		i = ((int []){0, 5, 3, 1, 4, 2})[i]; +		i = (unsigned int)(order - LIBFONTS_SUBPIXEL_ORDER_RGB) / 2; +		i = ((unsigned int []){0, 5, 3, 1, 4, 2})[i];  	} else if (order >= LIBFONTS_SUBPIXEL_ORDER_RR_GB && order <= LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_BG) {  		layout = ((order - LIBFONTS_SUBPIXEL_ORDER_RR_GB) & 3) + LIBFONTS_SUBPIXEL_ORDER_CLASS_11_23;  		if (order >= LIBFONTS_SUBPIXEL_ORDER_BALANCED_RR_GB)  			layout += 4; -		i = (order - LIBFONTS_SUBPIXEL_ORDER_RR_GB) / 4 % 6; +		i = (unsigned int)(order - LIBFONTS_SUBPIXEL_ORDER_RR_GB) / 4 % 6;  	} else {  		layout = LIBFONTS_SUBPIXEL_ORDER_CLASS_OTHER; @@ -61,7 +61,7 @@ main(void)  #define T_(ORDER, LAYOUT, C1, C2, C3)\  	do {\  		errno = 0;\ -		c1 = c2 = c3 = -1;\ +		c1 = c2 = c3 = (enum libfonts_subpixel_colour)~0;\  		ASSERT(libfonts_get_subpixel_order_class(ORDER, &c1, &c2, &c3) == LAYOUT);\  		ASSERT(c1 == C1);\  		ASSERT(c2 == C2);\ @@ -85,8 +85,8 @@ main(void)  	T(NONRGB, OTHER, R, G, B);  	T(NONLINEAR, OTHER, R, G, B);  	T(OTHER, OTHER, R, G, B); -	T(UNKNOWN - 1000, OTHER, R, G, B); -	T(UNKNOWN + 9999, OTHER, R, G, B); +	T_((enum libfonts_subpixel_order)~1, LIBFONTS_SUBPIXEL_ORDER_CLASS_OTHER, R, G, B); +	T_(9999, LIBFONTS_SUBPIXEL_ORDER_CLASS_OTHER, R, G, B);  	T(RGB, 123, R, G, B);  	T(R_G_B, 1_2_3, R, G, B); diff --git a/libfonts_parse_double__.c b/libfonts_parse_double__.c index 30fc61d..2fb182c 100644 --- a/libfonts_parse_double__.c +++ b/libfonts_parse_double__.c @@ -6,6 +6,8 @@  int  libfonts_parse_double__(double *outp, const char *value)  { +	(void) outp; +	(void) value;  	return 0; /* TODO implement */  } diff --git a/libfonts_unget_subpixel_order_class.c b/libfonts_unget_subpixel_order_class.c index 47d8366..01c980a 100644 --- a/libfonts_unget_subpixel_order_class.c +++ b/libfonts_unget_subpixel_order_class.c @@ -10,11 +10,11 @@ libfonts_unget_subpixel_order_class(enum libfonts_subpixel_order *orderp,                                      enum libfonts_subpixel_colour cell2,                                      enum libfonts_subpixel_colour cell3)  { -	int i; +	unsigned int i; -	if (cell1 < 0 || cell1 > 2 || -	    cell2 < 0 || cell2 > 2 || -	    cell3 < 0 || cell3 > 2 || +	if ((uintmax_t)cell1 > 2 || +	    (uintmax_t)cell2 > 2 || +	    (uintmax_t)cell3 > 2 ||  	    cell1 == cell2 ||  	    cell2 == cell3 ||  	    cell3 == cell1) { @@ -30,9 +30,11 @@ libfonts_unget_subpixel_order_class(enum libfonts_subpixel_order *orderp,  	} else if (layout == LIBFONTS_SUBPIXEL_ORDER_CLASS_123 || layout == LIBFONTS_SUBPIXEL_ORDER_CLASS_1_2_3) {  		if (orderp) {  			/* RGB, BGR, GBR, RBG, BRG, GRB */ -			i = ((cell2 + 2) % 3) * 2; -			i += (cell1 < cell3) ^ (cell2 == LIBFONTS_SUBPIXEL_COLOUR_GREEN); -			*orderp = i * 2 + (layout == LIBFONTS_SUBPIXEL_ORDER_CLASS_1_2_3) + LIBFONTS_SUBPIXEL_ORDER_RGB; +			i = (unsigned int)((cell2 + 2) % 3) * 2; +			i += (unsigned int)(cell1 < cell3) ^ (cell2 == LIBFONTS_SUBPIXEL_COLOUR_GREEN); +			*orderp = (enum libfonts_subpixel_order)(i * 2 + +			                                         (layout == LIBFONTS_SUBPIXEL_ORDER_CLASS_1_2_3) + +			                                         LIBFONTS_SUBPIXEL_ORDER_RGB);  		}  		return 1; @@ -41,7 +43,7 @@ libfonts_unget_subpixel_order_class(enum libfonts_subpixel_order *orderp,  			/* RGB, RBG, GRB, GBR, BRG, BGR */  			i = (cell1 * 2) + (cell2 > cell3);  			*orderp = i * 4 + (layout - LIBFONTS_SUBPIXEL_ORDER_CLASS_11_23) % 4 + LIBFONTS_SUBPIXEL_ORDER_RR_GB; -			*orderp += (layout >= LIBFONTS_SUBPIXEL_ORDER_CLASS_BALANCED_11_23) * 24; +			*orderp += (enum libfonts_subpixel_order)((layout >= LIBFONTS_SUBPIXEL_ORDER_CLASS_BALANCED_11_23) * 24);  		}  		return 1; @@ -69,7 +71,7 @@ main(void)  #define T_(ORDER, LAYOUT, C1, C2, C3)\  	do {\  		errno = 0;\ -		order = -1;\ +		order = (enum libfonts_subpixel_order)~1;\  		ASSERT(libfonts_unget_subpixel_order_class(&order, LAYOUT, C1, C2, C3) == 1);\  		ASSERT(order == ORDER);\  		ASSERT(!errno);\ @@ -82,7 +84,7 @@ main(void)  #define TU_(LAYOUT, C1, C2, C3)\  	do {\  		errno = 0;\ -		order = -1;\ +		order = (enum libfonts_subpixel_order)~1;\  		ASSERT(libfonts_unget_subpixel_order_class(&order, LAYOUT, C1, C2, C3) == 0);\  		ASSERT(order == LIBFONTS_SUBPIXEL_ORDER_UNKNOWN);\  		ASSERT(!errno);\ @@ -111,18 +113,18 @@ main(void)  	TU(OTHER, G, R, B);  	TU(OTHER, B, G, R); -	TE(OTHER, -1, G, B); -	TE(OTHER, R, -1, B); -	TE(OTHER, R, G, -1); -	TE(OTHER, -1, -2, B); +	TE(OTHER, (enum libfonts_subpixel_colour)~1, G, B); +	TE(OTHER, R, (enum libfonts_subpixel_colour)~1, B); +	TE(OTHER, R, G, (enum libfonts_subpixel_colour)~1); +	TE(OTHER, (enum libfonts_subpixel_colour)~1, (enum libfonts_subpixel_colour)~2, B);  	TE(OTHER, 3, G, B);  	TE(OTHER, R, 3, B);  	TE(OTHER, R, G, 3);  	TE(OTHER, R, 3, 4); -	TE(123, -1, G, B); -	TE(123, R, -1, B); -	TE(123, R, G, -1); -	TE(123, -1, -2, B); +	TE(123, (enum libfonts_subpixel_colour)~1, G, B); +	TE(123, R, (enum libfonts_subpixel_colour)~1, B); +	TE(123, R, G, (enum libfonts_subpixel_colour)~1); +	TE(123, (enum libfonts_subpixel_colour)~1, (enum libfonts_subpixel_colour)~2, B);  	TE(123, 3, G, B);  	TE(123, R, 3, B);  	TE(123, R, G, 3); @@ -130,7 +132,7 @@ main(void)  	TE(123, R, R, G);  	TE(123, R, G, R);  	TE(123, R, G, G); -	TE_(-1, R, G, B); +	TE_((enum libfonts_subpixel_order_class)~1, R, G, B);  	TE_(9999, R, G, B);  	T(RGB, 123, R, G, B); | 
