w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

cairo-truetype-subset.c
Go to the documentation of this file.
1 /* cairo - a vector graphics library with display and print output
2  *
3  * Copyright © 2004 Red Hat, Inc
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it either under the terms of the GNU Lesser General Public
7  * License version 2.1 as published by the Free Software Foundation
8  * (the "LGPL") or, at your option, under the terms of the Mozilla
9  * Public License Version 1.1 (the "MPL"). If you do not alter this
10  * notice, a recipient may use your version of this file under either
11  * the MPL or the LGPL.
12  *
13  * You should have received a copy of the LGPL along with this library
14  * in the file COPYING-LGPL-2.1; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
16  * You should have received a copy of the MPL along with this library
17  * in the file COPYING-MPL-1.1
18  *
19  * The contents of this file are subject to the Mozilla Public License
20  * Version 1.1 (the "License"); you may not use this file except in
21  * compliance with the License. You may obtain a copy of the License at
22  * http://www.mozilla.org/MPL/
23  *
24  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
25  * OF ANY KIND, either express or implied. See the LGPL or the MPL for
26  * the specific language governing rights and limitations.
27  *
28  * The Original Code is the cairo graphics library.
29  *
30  * The Initial Developer of the Original Code is Red Hat, Inc.
31  *
32  * Contributor(s):
33  * Kristian Høgsberg <krh@redhat.com>
34  * Adrian Johnson <ajohnson@redneon.com>
35  */
36 
37 /*
38  * Useful links:
39  * http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6.html
40  * http://www.microsoft.com/typography/specs/default.htm
41  */
42 
43 #define _DEFAULT_SOURCE /* for snprintf(), strdup() */
44 #include "cairoint.h"
45 
46 #include "cairo-array-private.h"
47 #include "cairo-error-private.h"
48 
49 #if CAIRO_HAS_FONT_SUBSET
50 
53 
54 
55 typedef struct subset_glyph subset_glyph_t;
56 struct subset_glyph {
57  int parent_index;
58  unsigned long location;
59 };
60 
62 
63 typedef struct table table_t;
64 struct table {
65  unsigned long tag;
66  cairo_status_t (*write) (cairo_truetype_font_t *font, unsigned long tag);
67  int pos; /* position in the font directory */
68 };
69 
70 struct _cairo_truetype_font {
71 
73 
75  int num_tables;
76 
77  struct {
78  char *font_name;
79  char *ps_name;
80  int num_glyphs_in_face; /* glyphs in font */
81  long x_min, y_min, x_max, y_max;
82  long ascent, descent;
83  int units_per_em;
84  } base;
85 
86  subset_glyph_t *glyphs; /* array size: num_glyphs_in_face + 2 */
88  unsigned int num_glyphs; /* glyphs used */
89  int *widths; /* array size: num_glyphs_in_face + 1 */
90  int checksum_index;
93  unsigned long last_offset;
94  unsigned long last_boundary;
95  int *parent_to_subset; /* array size: num_glyphs_in_face + 1 */
98 };
99 
100 /*
101  * Test that the structs we define for TrueType tables have the
102  * correct size, ie. they are not padded.
103  */
104 #define check(T, S) COMPILE_TIME_ASSERT (sizeof (T) == (S))
106 check (tt_hhea_t, 36);
107 check (tt_maxp_t, 32);
108 check (tt_name_record_t, 12);
109 check (tt_name_t, 18);
111 check (tt_glyph_data_t, 26);
112 #undef check
113 
114 static cairo_status_t
116  unsigned short glyph,
117  unsigned short *out);
118 
119 #define SFNT_VERSION 0x00010000
120 #define SFNT_STRING_MAX_LENGTH 65535
121 
122 static cairo_status_t
125 {
126  if (status == CAIRO_STATUS_SUCCESS ||
128  return status;
129 
130  _cairo_status_set_error (&font->status, status);
131 
132  return _cairo_error (status);
133 }
134 
135 static cairo_status_t
137  cairo_bool_t is_pdf,
138  cairo_truetype_font_t **font_return)
139 {
141  cairo_bool_t is_synthetic;
144  tt_head_t head;
145  tt_hhea_t hhea;
146  tt_maxp_t maxp;
147  unsigned long size;
148 
149  backend = scaled_font_subset->scaled_font->backend;
150  if (!backend->load_truetype_table)
152 
153  /* FIXME: We should either support subsetting vertical fonts, or fail on
154  * vertical. Currently font_options_t doesn't have vertical flag, but
155  * it should be added in the future. For now, the freetype backend
156  * returns UNSUPPORTED in load_truetype_table if the font is vertical.
157  *
158  * if (cairo_font_options_get_vertical_layout (scaled_font_subset->scaled_font))
159  * return CAIRO_INT_STATUS_UNSUPPORTED;
160  */
161 
162  /* We need to use a fallback font if this font differs from the glyf outlines. */
163  if (backend->is_synthetic) {
164  status = backend->is_synthetic (scaled_font_subset->scaled_font, &is_synthetic);
165  if (unlikely (status))
166  return status;
167 
168  if (is_synthetic)
170  }
171 
172  size = sizeof (tt_head_t);
173  status = backend->load_truetype_table (scaled_font_subset->scaled_font,
174  TT_TAG_head, 0,
175  (unsigned char *) &head,
176  &size);
177  if (unlikely (status))
178  return status;
179 
180  size = sizeof (tt_maxp_t);
181  status = backend->load_truetype_table (scaled_font_subset->scaled_font,
182  TT_TAG_maxp, 0,
183  (unsigned char *) &maxp,
184  &size);
185  if (unlikely (status))
186  return status;
187 
188  size = sizeof (tt_hhea_t);
189  status = backend->load_truetype_table (scaled_font_subset->scaled_font,
190  TT_TAG_hhea, 0,
191  (unsigned char *) &hhea,
192  &size);
193  if (unlikely (status))
194  return status;
195 
197  if (unlikely (font == NULL))
199 
200  font->backend = backend;
201  font->base.num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs);
202  font->scaled_font_subset = scaled_font_subset;
203 
204  font->last_offset = 0;
205  font->last_boundary = 0;
206  _cairo_array_init (&font->output, sizeof (char));
207  status = _cairo_array_grow_by (&font->output, 4096);
208  if (unlikely (status))
209  goto fail1;
210 
211  /* Add 2: +1 case font does not contain .notdef, and +1 because an extra
212  * entry is required to contain the end location of the last glyph.
213  */
214  font->glyphs = calloc (font->base.num_glyphs_in_face + 2, sizeof (subset_glyph_t));
215  if (unlikely (font->glyphs == NULL)) {
217  goto fail1;
218  }
219 
220  /* Add 1 in case font does not contain .notdef */
221  font->parent_to_subset = calloc (font->base.num_glyphs_in_face + 1, sizeof (int));
222  if (unlikely (font->parent_to_subset == NULL)) {
224  goto fail2;
225  }
226 
227  font->is_pdf = is_pdf;
228  font->num_glyphs = 0;
229  font->base.x_min = (int16_t) be16_to_cpu (head.x_min);
230  font->base.y_min = (int16_t) be16_to_cpu (head.y_min);
231  font->base.x_max = (int16_t) be16_to_cpu (head.x_max);
232  font->base.y_max = (int16_t) be16_to_cpu (head.y_max);
233  font->base.ascent = (int16_t) be16_to_cpu (hhea.ascender);
234  font->base.descent = (int16_t) be16_to_cpu (hhea.descender);
235  font->base.units_per_em = (int16_t) be16_to_cpu (head.units_per_em);
236  if (font->base.units_per_em == 0)
237  font->base.units_per_em = 2048;
238 
239  font->base.ps_name = NULL;
240  font->base.font_name = NULL;
241  status = _cairo_truetype_read_font_name (scaled_font_subset->scaled_font,
242  &font->base.ps_name,
243  &font->base.font_name);
245  goto fail3;
246 
247  /* If the PS name is not found, create a CairoFont-x-y name. */
248  if (font->base.ps_name == NULL) {
249  font->base.ps_name = _cairo_malloc (30);
250  if (unlikely (font->base.ps_name == NULL)) {
252  goto fail3;
253  }
254 
255  snprintf(font->base.ps_name, 30, "CairoFont-%u-%u",
256  scaled_font_subset->font_id,
257  scaled_font_subset->subset_id);
258  }
259 
260  /* Add 1 in case font does not contain .notdef */
261  font->widths = calloc (font->base.num_glyphs_in_face + 1, sizeof (int));
262  if (unlikely (font->widths == NULL)) {
264  goto fail4;
265  }
266 
267  _cairo_array_init (&font->string_offsets, sizeof (unsigned long));
268  status = _cairo_array_grow_by (&font->string_offsets, 10);
269  if (unlikely (status))
270  goto fail5;
271 
272  font->status = CAIRO_STATUS_SUCCESS;
273 
274  *font_return = font;
275 
276  return CAIRO_STATUS_SUCCESS;
277 
278  fail5:
279  _cairo_array_fini (&font->string_offsets);
280  free (font->widths);
281  fail4:
282  free (font->base.ps_name);
283  fail3:
284  free (font->parent_to_subset);
285  free (font->base.font_name);
286  fail2:
287  free (font->glyphs);
288  fail1:
289  _cairo_array_fini (&font->output);
290  free (font);
291 
292  return status;
293 }
294 
295 static void
297 {
298  _cairo_array_fini (&font->string_offsets);
299  free (font->widths);
300  free (font->base.ps_name);
301  free (font->base.font_name);
302  free (font->parent_to_subset);
303  free (font->glyphs);
304  _cairo_array_fini (&font->output);
305  free (font);
306 }
307 
308 static cairo_status_t
310  size_t length,
311  unsigned char **buffer)
312 {
314 
315  if (font->status)
316  return font->status;
317 
318  status = _cairo_array_allocate (&font->output, length, (void **) buffer);
319  if (unlikely (status))
321 
322  return CAIRO_STATUS_SUCCESS;
323 }
324 
325 static void
327  const void *data,
328  size_t length)
329 {
331 
332  if (font->status)
333  return;
334 
336  if (unlikely (status))
338 }
339 
340 static void
342  uint16_t value)
343 {
344  uint16_t be16_value;
345 
346  if (font->status)
347  return;
348 
349  be16_value = cpu_to_be16 (value);
350  cairo_truetype_font_write (font, &be16_value, sizeof be16_value);
351 }
352 
353 static void
355  uint32_t value)
356 {
357  uint32_t be32_value;
358 
359  if (font->status)
360  return;
361 
362  be32_value = cpu_to_be32 (value);
363  cairo_truetype_font_write (font, &be32_value, sizeof be32_value);
364 }
365 
366 static cairo_status_t
368  unsigned long *aligned)
369 {
370  int length, pad;
371  unsigned char *padding;
372 
374  *aligned = (length + 3) & ~3;
375  pad = *aligned - length;
376 
377  if (pad) {
379 
381  &padding);
382  if (unlikely (status))
383  return status;
384 
385  memset (padding, 0, pad);
386  }
387 
388  return CAIRO_STATUS_SUCCESS;
389 }
390 
391 static cairo_status_t
393  unsigned long boundary)
394 {
396 
397  if (font->status)
398  return font->status;
399 
400  if (boundary - font->last_offset > SFNT_STRING_MAX_LENGTH)
401  {
402  status = _cairo_array_append (&font->string_offsets,
403  &font->last_boundary);
404  if (unlikely (status))
406 
407  font->last_offset = font->last_boundary;
408  }
409  font->last_boundary = boundary;
410 
411  return CAIRO_STATUS_SUCCESS;
412 }
413 
414 typedef struct _cmap_unicode_range {
415  unsigned int start;
416  unsigned int end;
418 
420  { 0x0020, 0x007f },
421  { 0x00a0, 0x00ff },
422  { 0x0152, 0x0153 },
423  { 0x0160, 0x0161 },
424  { 0x0178, 0x0178 },
425  { 0x017d, 0x017e },
426  { 0x0192, 0x0192 },
427  { 0x02c6, 0x02c6 },
428  { 0x02dc, 0x02dc },
429  { 0x2013, 0x2026 },
430  { 0x2030, 0x2030 },
431  { 0x2039, 0x203a },
432  { 0x20ac, 0x20ac },
433  { 0x2122, 0x2122 },
434 };
435 
436 static cairo_status_t
438  unsigned long tag)
439 {
440  int i;
441  unsigned int j;
442  int range_offset;
443  int num_ranges;
444  int entry_selector;
445  int length;
446 
447  num_ranges = ARRAY_LENGTH (winansi_unicode_ranges);
448 
449  length = 16 + (num_ranges + 1)*8;
450  for (i = 0; i < num_ranges; i++)
452 
453  entry_selector = 0;
454  while ((1 << entry_selector) <= (num_ranges + 1))
455  entry_selector++;
456 
457  entry_selector--;
458 
459  cairo_truetype_font_write_be16 (font, 0); /* Table version */
460  cairo_truetype_font_write_be16 (font, 1); /* Num tables */
461 
462  cairo_truetype_font_write_be16 (font, 3); /* Platform */
463  cairo_truetype_font_write_be16 (font, 1); /* Encoding */
464  cairo_truetype_font_write_be32 (font, 12); /* Offset to start of table */
465 
466  /* Output a format 4 encoding table for the winansi encoding */
467 
468  cairo_truetype_font_write_be16 (font, 4); /* Format */
470  cairo_truetype_font_write_be16 (font, 0); /* Version */
471  cairo_truetype_font_write_be16 (font, num_ranges*2 + 2); /* 2*segcount */
472  cairo_truetype_font_write_be16 (font, (1 << (entry_selector + 1))); /* searchrange */
473  cairo_truetype_font_write_be16 (font, entry_selector); /* entry selector */
474  cairo_truetype_font_write_be16 (font, num_ranges*2 + 2 - (1 << (entry_selector + 1))); /* rangeshift */
475  for (i = 0; i < num_ranges; i++)
477  cairo_truetype_font_write_be16 (font, 0xffff); /* end count[] */
478 
479  cairo_truetype_font_write_be16 (font, 0); /* reserved */
480 
481  for (i = 0; i < num_ranges; i++)
483  cairo_truetype_font_write_be16 (font, 0xffff); /* startCode[] */
484 
485  for (i = 0; i < num_ranges; i++)
486  cairo_truetype_font_write_be16 (font, 0x0000); /* delta[] */
487  cairo_truetype_font_write_be16 (font, 1); /* delta[] */
488 
489  range_offset = num_ranges*2 + 2;
490  for (i = 0; i < num_ranges; i++) {
491  cairo_truetype_font_write_be16 (font, range_offset); /* rangeOffset[] */
492  range_offset += (winansi_unicode_ranges[i].end - winansi_unicode_ranges[i].start + 1)*2 - 2;
493  }
494  cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[] */
495 
496  for (i = 0; i < num_ranges; i++) {
499  int glyph;
500 
501  if (ch > 0)
502  glyph = font->scaled_font_subset->latin_to_subset_glyph_index[ch];
503  else
504  glyph = 0;
506  }
507  }
508 
509  return font->status;
510 }
511 
512 static cairo_status_t
514  unsigned long tag)
515 {
517  unsigned char *buffer;
518  unsigned long size;
519 
520  if (font->status)
521  return font->status;
522 
523  size = 0;
524  status = font->backend->load_truetype_table(font->scaled_font_subset->scaled_font,
525  tag, 0, NULL, &size);
526  if (unlikely (status))
528 
530  if (unlikely (status))
532 
533  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
534  tag, 0, buffer, &size);
535  if (unlikely (status))
537 
538  return CAIRO_STATUS_SUCCESS;
539 }
540 
541 static cairo_status_t
543  unsigned char *buffer,
544  unsigned long size)
545 {
546  tt_glyph_data_t *glyph_data;
547  tt_composite_glyph_t *composite_glyph;
548  int num_args;
549  int has_more_components;
550  unsigned short flags;
551  unsigned short index;
553  unsigned char *end = buffer + size;
554 
555  if (font->status)
556  return font->status;
557 
558  glyph_data = (tt_glyph_data_t *) buffer;
559  if ((unsigned char *)(&glyph_data->data) >= end)
561 
562  if ((int16_t)be16_to_cpu (glyph_data->num_contours) >= 0)
563  return CAIRO_STATUS_SUCCESS;
564 
565  composite_glyph = &glyph_data->glyph;
566  do {
567  if ((unsigned char *)(&composite_glyph->args[1]) > end)
569 
570  flags = be16_to_cpu (composite_glyph->flags);
571  has_more_components = flags & TT_MORE_COMPONENTS;
573  if (unlikely (status))
574  return status;
575 
576  composite_glyph->index = cpu_to_be16 (index);
577  num_args = 1;
579  num_args += 1;
580 
582  num_args += 1;
584  num_args += 2;
585  else if (flags & TT_WE_HAVE_A_TWO_BY_TWO)
586  num_args += 4;
587 
588  composite_glyph = (tt_composite_glyph_t *) &(composite_glyph->args[num_args]);
589  } while (has_more_components);
590 
591  return CAIRO_STATUS_SUCCESS;
592 }
593 
594 static cairo_status_t
596  unsigned long tag)
597 {
598  unsigned long start_offset, index, size, next;
600  unsigned long begin, end;
601  unsigned char *buffer;
602  unsigned int i;
603  union {
604  unsigned char *bytes;
605  uint16_t *short_offsets;
607  } u;
609 
610  if (font->status)
611  return font->status;
612 
613  size = sizeof (tt_head_t);
614  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
615  TT_TAG_head, 0,
616  (unsigned char*) &header, &size);
617  if (unlikely (status))
619 
620  if (be16_to_cpu (header.index_to_loc_format) == 0)
621  size = sizeof (int16_t) * (font->base.num_glyphs_in_face + 1);
622  else
623  size = sizeof (int32_t) * (font->base.num_glyphs_in_face + 1);
624 
625  u.bytes = _cairo_malloc (size);
626  if (unlikely (u.bytes == NULL))
628 
629  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
630  TT_TAG_loca, 0, u.bytes, &size);
631  if (unlikely (status))
633 
634  start_offset = _cairo_array_num_elements (&font->output);
635  for (i = 0; i < font->num_glyphs; i++) {
636  index = font->glyphs[i].parent_index;
637  if (be16_to_cpu (header.index_to_loc_format) == 0) {
638  begin = be16_to_cpu (u.short_offsets[index]) * 2;
639  end = be16_to_cpu (u.short_offsets[index + 1]) * 2;
640  }
641  else {
642  begin = be32_to_cpu (u.long_offsets[index]);
643  end = be32_to_cpu (u.long_offsets[index + 1]);
644  }
645 
646  /* quick sanity check... */
647  if (end < begin) {
649  goto FAIL;
650  }
651 
652  size = end - begin;
654  if (unlikely (status))
655  goto FAIL;
656 
658  if (unlikely (status))
659  goto FAIL;
660 
661  font->glyphs[i].location = next - start_offset;
662 
664  if (unlikely (status))
665  goto FAIL;
666 
667  if (size > 1) {
668  tt_glyph_data_t *glyph_data;
669  int num_contours;
670 
671  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
673  if (unlikely (status))
674  goto FAIL;
675 
676  glyph_data = (tt_glyph_data_t *) buffer;
677  num_contours = (int16_t)be16_to_cpu (glyph_data->num_contours);
678  if (num_contours < 0) {
680  if (unlikely (status))
681  goto FAIL;
682  } else if (num_contours == 0) {
683  /* num_contours == 0 is undefined in the Opentype
684  * spec. There are some embedded fonts that have a
685  * space glyph with num_contours = 0 that fails on
686  * some printers. The spec requires glyphs without
687  * contours to have a 0 size glyph entry in the loca
688  * table.
689  *
690  * If num_contours == 0, truncate the glyph to 0 size.
691  */
693  }
694  }
695  }
696 
698  if (unlikely (status))
699  goto FAIL;
700 
701  font->glyphs[i].location = next - start_offset;
702 
703  status = font->status;
704 FAIL:
705  free (u.bytes);
706 
708 }
709 
710 static cairo_status_t
712  unsigned long tag)
713 {
714  unsigned char *buffer;
715  unsigned long size;
717 
718  if (font->status)
719  return font->status;
720 
721  size = 0;
722  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
723  tag, 0, NULL, &size);
724  if (unlikely (status))
726 
727  font->checksum_index = _cairo_array_num_elements (&font->output) + 8;
729  if (unlikely (status))
731 
732  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
733  tag, 0, buffer, &size);
734  if (unlikely (status))
736 
737  /* set checkSumAdjustment to 0 for table checksum calculation */
738  *(uint32_t *)(buffer + 8) = 0;
739 
740  return CAIRO_STATUS_SUCCESS;
741 }
742 
743 static cairo_status_t
745 {
746  tt_hhea_t *hhea;
747  unsigned long size;
749 
750  if (font->status)
751  return font->status;
752 
753  size = sizeof (tt_hhea_t);
754  status = cairo_truetype_font_allocate_write_buffer (font, size, (unsigned char **) &hhea);
755  if (unlikely (status))
757 
758  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
759  tag, 0, (unsigned char *) hhea, &size);
760  if (unlikely (status))
762 
763  hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->num_glyphs));
764 
765  return CAIRO_STATUS_SUCCESS;
766 }
767 
768 static cairo_status_t
770  unsigned long tag)
771 {
772  unsigned long size;
773  unsigned long long_entry_size;
774  unsigned long short_entry_size;
775  short *p;
776  unsigned int i;
777  tt_hhea_t hhea;
778  int num_hmetrics;
780 
781  if (font->status)
782  return font->status;
783 
784  size = sizeof (tt_hhea_t);
785  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
786  TT_TAG_hhea, 0,
787  (unsigned char*) &hhea, &size);
788  if (unlikely (status))
790 
791  num_hmetrics = be16_to_cpu(hhea.num_hmetrics);
792 
793  for (i = 0; i < font->num_glyphs; i++) {
794  long_entry_size = 2 * sizeof (int16_t);
795  short_entry_size = sizeof (int16_t);
797  long_entry_size,
798  (unsigned char **) &p);
799  if (unlikely (status))
801 
802  if (font->glyphs[i].parent_index < num_hmetrics) {
803  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
804  TT_TAG_hmtx,
805  font->glyphs[i].parent_index * long_entry_size,
806  (unsigned char *) p, &long_entry_size);
807  if (unlikely (status))
809  }
810  else
811  {
812  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
813  TT_TAG_hmtx,
814  (num_hmetrics - 1) * long_entry_size,
815  (unsigned char *) p, &short_entry_size);
816  if (unlikely (status))
818 
819  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
820  TT_TAG_hmtx,
821  num_hmetrics * long_entry_size +
822  (font->glyphs[i].parent_index - num_hmetrics) * short_entry_size,
823  (unsigned char *) (p + 1), &short_entry_size);
824  if (unlikely (status))
826  }
827  font->widths[i] = be16_to_cpu (p[0]);
828  }
829 
830  return CAIRO_STATUS_SUCCESS;
831 }
832 
833 static cairo_status_t
835  unsigned long tag)
836 {
837  unsigned int i;
839  unsigned long size;
841 
842  if (font->status)
843  return font->status;
844 
845  size = sizeof(tt_head_t);
846  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
847  TT_TAG_head, 0,
848  (unsigned char*) &header, &size);
849  if (unlikely (status))
851 
852  if (be16_to_cpu (header.index_to_loc_format) == 0)
853  {
854  for (i = 0; i < font->num_glyphs + 1; i++)
855  cairo_truetype_font_write_be16 (font, font->glyphs[i].location / 2);
856  } else {
857  for (i = 0; i < font->num_glyphs + 1; i++)
858  cairo_truetype_font_write_be32 (font, font->glyphs[i].location);
859  }
860 
861  return font->status;
862 }
863 
864 static cairo_status_t
866  unsigned long tag)
867 {
868  tt_maxp_t *maxp;
869  unsigned long size;
871 
872  if (font->status)
873  return font->status;
874 
875  size = sizeof (tt_maxp_t);
877  if (unlikely (status))
879 
880  status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
881  tag, 0, (unsigned char *) maxp, &size);
882  if (unlikely (status))
884 
885  maxp->num_glyphs = cpu_to_be16 (font->num_glyphs);
886 
887  return CAIRO_STATUS_SUCCESS;
888 }
889 
890 static cairo_status_t
892 {
894  unsigned char *table_buffer;
895  size_t table_buffer_length;
896  unsigned short search_range, entry_selector, range_shift;
897 
898  if (font->status)
899  return font->status;
900 
901  search_range = 1;
902  entry_selector = 0;
903  while (search_range * 2 <= font->num_tables) {
904  search_range *= 2;
905  entry_selector++;
906  }
907  search_range *= 16;
908  range_shift = font->num_tables * 16 - search_range;
909 
912  cairo_truetype_font_write_be16 (font, search_range);
913  cairo_truetype_font_write_be16 (font, entry_selector);
914  cairo_truetype_font_write_be16 (font, range_shift);
915 
916  /* Allocate space for the table directory. Each directory entry
917  * will be filled in by cairo_truetype_font_update_entry() after
918  * the table is written. */
919  table_buffer_length = font->num_tables * 16;
920  status = cairo_truetype_font_allocate_write_buffer (font, table_buffer_length,
921  &table_buffer);
922  if (unlikely (status))
924 
925  return CAIRO_STATUS_SUCCESS;
926 }
927 
928 static uint32_t
930  unsigned long start,
931  unsigned long end)
932 {
933  uint32_t *padded_end;
934  uint32_t *p;
936  char *data;
937 
938  checksum = 0;
939  data = _cairo_array_index (&font->output, 0);
940  p = (uint32_t *) (data + start);
941  padded_end = (uint32_t *) (data + ((end + 3) & ~3));
942  while (p < padded_end)
943  checksum += be32_to_cpu(*p++);
944 
945  return checksum;
946 }
947 
948 static void
950  int index,
951  unsigned long tag,
952  unsigned long start,
953  unsigned long end)
954 {
955  uint32_t *entry;
956 
957  entry = _cairo_array_index (&font->output, 12 + 16 * index);
958  entry[0] = cpu_to_be32 ((uint32_t)tag);
961  entry[3] = cpu_to_be32 ((uint32_t)(end - start));
962 }
963 
964 static cairo_status_t
966  const char **data,
967  unsigned long *length,
968  const unsigned long **string_offsets,
969  unsigned long *num_strings)
970 {
972  unsigned long start, end, next;
973  uint32_t checksum, *checksum_location;
974  int i;
975 
976  if (font->status)
977  return font->status;
978 
980  if (unlikely (status))
981  goto FAIL;
982 
984  if (unlikely (status))
985  goto FAIL;
986 
987  end = 0;
988  for (i = 0; i < font->num_tables; i++) {
989  status = font->truetype_tables[i].write (font, font->truetype_tables[i].tag);
990  if (unlikely (status))
991  goto FAIL;
992 
993  end = _cairo_array_num_elements (&font->output);
995  if (unlikely (status))
996  goto FAIL;
997 
998  cairo_truetype_font_update_entry (font, font->truetype_tables[i].pos,
999  font->truetype_tables[i].tag, start, end);
1001  if (unlikely (status))
1002  goto FAIL;
1003 
1004  start = next;
1005  }
1006 
1007  checksum =
1008  0xb1b0afba - cairo_truetype_font_calculate_checksum (font, 0, end);
1009  checksum_location = _cairo_array_index (&font->output, font->checksum_index);
1010  *checksum_location = cpu_to_be32 (checksum);
1011 
1012  *data = _cairo_array_index (&font->output, 0);
1013  *length = _cairo_array_num_elements (&font->output);
1014  *num_strings = _cairo_array_num_elements (&font->string_offsets);
1015  if (*num_strings != 0)
1016  *string_offsets = _cairo_array_index (&font->string_offsets, 0);
1017  else
1018  *string_offsets = NULL;
1019 
1020  FAIL:
1022 }
1023 
1024 static cairo_status_t
1026  unsigned short glyph,
1027  unsigned short *out)
1028 {
1029  if (glyph >= font->base.num_glyphs_in_face)
1031 
1032  if (font->parent_to_subset[glyph] == 0) {
1033  font->parent_to_subset[glyph] = font->num_glyphs;
1034  font->glyphs[font->num_glyphs].parent_index = glyph;
1035  font->num_glyphs++;
1036  }
1037 
1038  *out = font->parent_to_subset[glyph];
1039  return CAIRO_STATUS_SUCCESS;
1040 }
1041 
1042 static void
1044  unsigned long tag,
1045  cairo_status_t (*write) (cairo_truetype_font_t *font, unsigned long tag),
1046  int pos)
1047 {
1048  font->truetype_tables[font->num_tables].tag = tag;
1049  font->truetype_tables[font->num_tables].write = write;
1050  font->truetype_tables[font->num_tables].pos = pos;
1051  font->num_tables++;
1052 }
1053 
1054 /* cairo_truetype_font_create_truetype_table_list() builds the list of
1055  * truetype tables to be embedded in the subsetted font. Each call to
1056  * cairo_truetype_font_add_truetype_table() adds a table, the callback
1057  * for generating the table, and the position in the table directory
1058  * to the truetype_tables array.
1059  *
1060  * As we write out the glyf table we remap composite glyphs.
1061  * Remapping composite glyphs will reference the sub glyphs the
1062  * composite glyph is made up of. The "glyf" table callback needs to
1063  * be called first so we have all the glyphs in the subset before
1064  * going further.
1065  *
1066  * The order in which tables are added to the truetype_table array
1067  * using cairo_truetype_font_add_truetype_table() specifies the order
1068  * in which the callback functions will be called.
1069  *
1070  * The tables in the table directory must be listed in alphabetical
1071  * order. The "cvt", "fpgm", and "prep" are optional tables. They
1072  * will only be embedded in the subset if they exist in the source
1073  * font. "cmap" is only embedded for latin fonts. The pos parameter of
1074  * cairo_truetype_font_add_truetype_table() specifies the position of
1075  * the table in the table directory.
1076  */
1077 static void
1079 {
1080  cairo_bool_t has_cvt = FALSE;
1081  cairo_bool_t has_fpgm = FALSE;
1082  cairo_bool_t has_prep = FALSE;
1083  unsigned long size;
1084  int pos;
1085 
1086  size = 0;
1087  if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
1088  TT_TAG_cvt, 0, NULL,
1090  has_cvt = TRUE;
1091 
1092  size = 0;
1093  if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
1094  TT_TAG_fpgm, 0, NULL,
1096  has_fpgm = TRUE;
1097 
1098  size = 0;
1099  if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font,
1100  TT_TAG_prep, 0, NULL,
1102  has_prep = TRUE;
1103 
1104  font->num_tables = 0;
1105  pos = 0;
1106  if (font->is_pdf && font->scaled_font_subset->is_latin)
1107  pos++;
1108  if (has_cvt)
1109  pos++;
1110  if (has_fpgm)
1111  pos++;
1113 
1114  pos = 0;
1115  if (font->is_pdf && font->scaled_font_subset->is_latin)
1117  if (has_cvt)
1119  if (has_fpgm)
1121  pos++;
1127  if (has_prep)
1129 }
1130 
1131 static cairo_status_t
1133  cairo_scaled_font_subset_t *font_subset,
1134  cairo_bool_t is_pdf)
1135 {
1138  const char *data = NULL; /* squelch bogus compiler warning */
1139  unsigned long length = 0; /* squelch bogus compiler warning */
1140  unsigned long offsets_length;
1141  unsigned int i;
1142  const unsigned long *string_offsets = NULL;
1143  unsigned long num_strings = 0;
1144 
1145  status = _cairo_truetype_font_create (font_subset, is_pdf, &font);
1146  if (unlikely (status))
1147  return status;
1148 
1149  for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) {
1150  unsigned short parent_glyph = font->scaled_font_subset->glyphs[i];
1151  status = cairo_truetype_font_use_glyph (font, parent_glyph, &parent_glyph);
1152  if (unlikely (status))
1153  goto fail1;
1154  }
1155 
1158  &string_offsets, &num_strings);
1159  if (unlikely (status))
1160  goto fail1;
1161 
1162  truetype_subset->ps_name = strdup (font->base.ps_name);
1163  if (unlikely (truetype_subset->ps_name == NULL)) {
1165  goto fail1;
1166  }
1167 
1168  if (font->base.font_name != NULL) {
1169  truetype_subset->family_name_utf8 = strdup (font->base.font_name);
1170  if (unlikely (truetype_subset->family_name_utf8 == NULL)) {
1172  goto fail2;
1173  }
1174  } else {
1175  truetype_subset->family_name_utf8 = NULL;
1176  }
1177 
1178  /* The widths array returned must contain only widths for the
1179  * glyphs in font_subset. Any subglyphs appended after
1180  * font_subset->num_glyphs are omitted. */
1181  truetype_subset->widths = calloc (sizeof (double),
1182  font->scaled_font_subset->num_glyphs);
1183  if (unlikely (truetype_subset->widths == NULL)) {
1185  goto fail3;
1186  }
1187  for (i = 0; i < font->scaled_font_subset->num_glyphs; i++)
1188  truetype_subset->widths[i] = (double)font->widths[i]/font->base.units_per_em;
1189 
1190  truetype_subset->x_min = (double)font->base.x_min/font->base.units_per_em;
1191  truetype_subset->y_min = (double)font->base.y_min/font->base.units_per_em;
1192  truetype_subset->x_max = (double)font->base.x_max/font->base.units_per_em;
1193  truetype_subset->y_max = (double)font->base.y_max/font->base.units_per_em;
1194  truetype_subset->ascent = (double)font->base.ascent/font->base.units_per_em;
1195  truetype_subset->descent = (double)font->base.descent/font->base.units_per_em;
1196 
1197  if (length) {
1198  truetype_subset->data = _cairo_malloc (length);
1199  if (unlikely (truetype_subset->data == NULL)) {
1201  goto fail4;
1202  }
1203 
1204  memcpy (truetype_subset->data, data, length);
1205  } else
1206  truetype_subset->data = NULL;
1207  truetype_subset->data_length = length;
1208 
1209  if (num_strings) {
1210  offsets_length = num_strings * sizeof (unsigned long);
1211  truetype_subset->string_offsets = _cairo_malloc (offsets_length);
1212  if (unlikely (truetype_subset->string_offsets == NULL)) {
1214  goto fail5;
1215  }
1216 
1217  memcpy (truetype_subset->string_offsets, string_offsets, offsets_length);
1218  truetype_subset->num_string_offsets = num_strings;
1219  } else {
1220  truetype_subset->string_offsets = NULL;
1221  truetype_subset->num_string_offsets = 0;
1222  }
1223 
1225 
1226  return CAIRO_STATUS_SUCCESS;
1227 
1228  fail5:
1229  free (truetype_subset->data);
1230  fail4:
1231  free (truetype_subset->widths);
1232  fail3:
1233  free (truetype_subset->family_name_utf8);
1234  fail2:
1235  free (truetype_subset->ps_name);
1236  fail1:
1238 
1239  return status;
1240 }
1241 
1244  cairo_scaled_font_subset_t *font_subset)
1245 {
1246  return cairo_truetype_subset_init_internal (truetype_subset, font_subset, FALSE);
1247 }
1248 
1251  cairo_scaled_font_subset_t *font_subset)
1252 {
1253  return cairo_truetype_subset_init_internal (truetype_subset, font_subset, TRUE);
1254 }
1255 
1256 void
1258 {
1259  free (subset->ps_name);
1260  free (subset->family_name_utf8);
1261  free (subset->widths);
1262  free (subset->data);
1263  free (subset->string_offsets);
1264 }
1265 
1266 static cairo_int_status_t
1268  unsigned long table_offset,
1269  unsigned long index,
1270  uint32_t *ucs4)
1271 {
1275  char buf[4];
1276  unsigned int num_segments, i;
1277  unsigned long size;
1278  uint16_t *start_code;
1279  uint16_t *end_code;
1280  uint16_t *delta;
1281  uint16_t *range_offset;
1282  uint16_t c;
1283 
1284  backend = scaled_font->backend;
1285  size = 4;
1286  status = backend->load_truetype_table (scaled_font,
1287  TT_TAG_cmap, table_offset,
1288  (unsigned char *) &buf,
1289  &size);
1290  if (unlikely (status))
1291  return status;
1292 
1293  /* All table formats have the same first two words */
1294  map = (tt_segment_map_t *) buf;
1295  if (be16_to_cpu (map->format) != 4)
1297 
1298  size = be16_to_cpu (map->length);
1299  map = _cairo_malloc (size);
1300  if (unlikely (map == NULL))
1302 
1303  status = backend->load_truetype_table (scaled_font,
1304  TT_TAG_cmap, table_offset,
1305  (unsigned char *) map,
1306  &size);
1307  if (unlikely (status))
1308  goto fail;
1309 
1310  num_segments = be16_to_cpu (map->segCountX2)/2;
1311 
1312  /* A Format 4 cmap contains 8 uint16_t numbers and 4 arrays of
1313  * uint16_t each num_segments long. */
1314  if (size < (8 + 4*num_segments)*sizeof(uint16_t))
1316 
1317  end_code = map->endCount;
1318  start_code = &(end_code[num_segments + 1]);
1319  delta = &(start_code[num_segments]);
1320  range_offset = &(delta[num_segments]);
1321 
1322  /* search for glyph in segments with rangeOffset=0 */
1323  for (i = 0; i < num_segments; i++) {
1324  uint16_t start = be16_to_cpu (start_code[i]);
1325  uint16_t end = be16_to_cpu (end_code[i]);
1326 
1327  if (start == 0xffff && end == 0xffff)
1328  break;
1329 
1330  c = index - be16_to_cpu (delta[i]);
1331  if (range_offset[i] == 0 && c >= start && c <= end) {
1332  *ucs4 = c;
1333  goto found;
1334  }
1335  }
1336 
1337  /* search for glyph in segments with rangeOffset=1 */
1338  for (i = 0; i < num_segments; i++) {
1339  uint16_t start = be16_to_cpu (start_code[i]);
1340  uint16_t end = be16_to_cpu (end_code[i]);
1341 
1342  if (start == 0xffff && end == 0xffff)
1343  break;
1344 
1345  if (range_offset[i] != 0) {
1346  uint16_t *glyph_ids = &range_offset[i] + be16_to_cpu (range_offset[i])/2;
1347  int range_size = end - start + 1;
1348  uint16_t g_id_be = cpu_to_be16 (index);
1349  int j;
1350 
1351  if (range_size > 0) {
1352  if ((char*)glyph_ids + 2*range_size > (char*)map + size)
1354 
1355  for (j = 0; j < range_size; j++) {
1356  if (glyph_ids[j] == g_id_be) {
1357  *ucs4 = start + j;
1358  goto found;
1359  }
1360  }
1361  }
1362  }
1363  }
1364 
1365  /* glyph not found */
1366  *ucs4 = -1;
1367 
1368 found:
1370 
1371 fail:
1372  free (map);
1373 
1374  return status;
1375 }
1376 
1379  unsigned long index,
1380  uint32_t *ucs4)
1381 {
1384  tt_cmap_t *cmap;
1385  char buf[4];
1386  int num_tables, i;
1387  unsigned long size;
1388 
1389  backend = scaled_font->backend;
1390  if (!backend->load_truetype_table)
1392 
1393  size = 4;
1394  status = backend->load_truetype_table (scaled_font,
1395  TT_TAG_cmap, 0,
1396  (unsigned char *) &buf,
1397  &size);
1398  if (unlikely (status))
1399  return status;
1400 
1401  cmap = (tt_cmap_t *) buf;
1402  num_tables = be16_to_cpu (cmap->num_tables);
1403  size = 4 + num_tables*sizeof(tt_cmap_index_t);
1404  cmap = _cairo_malloc_ab_plus_c (num_tables, sizeof (tt_cmap_index_t), 4);
1405  if (unlikely (cmap == NULL))
1407 
1408  status = backend->load_truetype_table (scaled_font,
1409  TT_TAG_cmap, 0,
1410  (unsigned char *) cmap,
1411  &size);
1412  if (unlikely (status))
1413  goto cleanup;
1414 
1415  /* Find a table with Unicode mapping */
1416  for (i = 0; i < num_tables; i++) {
1417  if (be16_to_cpu (cmap->index[i].platform) == 3 &&
1418  be16_to_cpu (cmap->index[i].encoding) == 1) {
1419  status = _cairo_truetype_reverse_cmap (scaled_font,
1420  be32_to_cpu (cmap->index[i].offset),
1421  index,
1422  ucs4);
1424  break;
1425  }
1426  }
1427 
1428 cleanup:
1429  free (cmap);
1430 
1431  return status;
1432 }
1433 
1434 /*
1435  * Sanity check on font name length as some broken fonts may return very long
1436  * strings of garbage. 127 is maximum length of a PS name.
1437  */
1438 #define MAX_FONT_NAME_LENGTH 127
1439 
1440 static cairo_status_t
1441 find_name (tt_name_t *name, int name_id, int platform, int encoding, int language, char **str_out)
1442 {
1443  tt_name_record_t *record;
1444  int i, len;
1445  char *str;
1446  char *p;
1447  cairo_bool_t has_tag;
1449 
1450  str = NULL;
1451  for (i = 0; i < be16_to_cpu (name->num_records); i++) {
1452  record = &(name->records[i]);
1453  if (be16_to_cpu (record->name) == name_id &&
1454  be16_to_cpu (record->platform) == platform &&
1455  be16_to_cpu (record->encoding) == encoding &&
1456  (language == -1 || be16_to_cpu (record->language) == language)) {
1457 
1458  len = be16_to_cpu (record->length);
1459  if (platform == 3 && len > MAX_FONT_NAME_LENGTH*2) /* UTF-16 name */
1460  break;
1461 
1462  if (len > MAX_FONT_NAME_LENGTH)
1463  break;
1464 
1465  str = _cairo_malloc (len + 1);
1466  if (str == NULL)
1468 
1469  memcpy (str,
1470  ((char*)name) + be16_to_cpu (name->strings_offset) + be16_to_cpu (record->offset),
1471  len);
1472  str[be16_to_cpu (record->length)] = 0;
1473  break;
1474  }
1475  }
1476  if (str == NULL) {
1477  *str_out = NULL;
1478  return CAIRO_STATUS_SUCCESS;
1479  }
1480 
1481  if (platform == 3) { /* Win platform, unicode encoding */
1482  /* convert to utf8 */
1483  int size = 0;
1484  char *utf8;
1485  uint16_t *u = (uint16_t *) str;
1486  int u_len = len/2;
1487 
1488  for (i = 0; i < u_len; i++)
1490 
1491  utf8 = _cairo_malloc (size + 1);
1492  if (utf8 == NULL) {
1494  goto fail;
1495  }
1496  p = utf8;
1497  for (i = 0; i < u_len; i++)
1499  *p = 0;
1500  free (str);
1501  str = utf8;
1502  } else if (platform == 1) { /* Mac platform, Mac Roman encoding */
1503  /* Replace characters above 127 with underscores. We could use
1504  * a lookup table to convert to unicode but since most fonts
1505  * include a unicode name this is just a rarely used fallback. */
1506  for (i = 0; i < len; i++) {
1507  if ((unsigned char)str[i] > 127)
1508  str[i] = '_';
1509  }
1510  }
1511 
1512  /* If font name is prefixed with a PDF subset tag, strip it off. */
1513  p = str;
1514  len = strlen (str);
1515  has_tag = FALSE;
1516  if (len > 7 && p[6] == '+') {
1517  has_tag = TRUE;
1518  for (i = 0; i < 6; i++) {
1519  if (p[i] < 'A' || p[i] > 'Z') {
1520  has_tag = FALSE;
1521  break;
1522  }
1523  }
1524  }
1525  if (has_tag) {
1526  p = _cairo_malloc (len - 6);
1527  if (unlikely (p == NULL)) {
1529  goto fail;
1530  }
1531  memcpy (p, str + 7, len - 7);
1532  p[len-7] = 0;
1533  free (str);
1534  str = p;
1535  }
1536 
1537  *str_out = str;
1538 
1539  return CAIRO_STATUS_SUCCESS;
1540 
1541  fail:
1542  free (str);
1543 
1544  return status;
1545 }
1546 
1549  char **ps_name_out,
1550  char **font_name_out)
1551 {
1554  tt_name_t *name;
1555  unsigned long size;
1556  char *ps_name = NULL;
1557  char *family_name = NULL;
1558 
1559  backend = scaled_font->backend;
1560  if (!backend->load_truetype_table)
1562 
1563  size = 0;
1564  status = backend->load_truetype_table (scaled_font,
1565  TT_TAG_name, 0,
1566  NULL,
1567  &size);
1568  if (status)
1569  return status;
1570 
1571  name = _cairo_malloc (size);
1572  if (name == NULL)
1574 
1575  status = backend->load_truetype_table (scaled_font,
1576  TT_TAG_name, 0,
1577  (unsigned char *) name,
1578  &size);
1579  if (status)
1580  goto fail;
1581 
1582  /* Find PS Name (name_id = 6). OT spec says PS name must be one of
1583  * the following two encodings */
1584  status = find_name (name, 6, 3, 1, 0x409, &ps_name); /* win, unicode, english-us */
1585  if (unlikely(status))
1586  goto fail;
1587 
1588  if (!ps_name) {
1589  status = find_name (name, 6, 1, 0, 0, &ps_name); /* mac, roman, english */
1590  if (unlikely(status))
1591  goto fail;
1592  }
1593 
1594  /* Find Family name (name_id = 1) */
1595  status = find_name (name, 1, 3, 1, 0x409, &family_name); /* win, unicode, english-us */
1596  if (unlikely(status))
1597  goto fail;
1598 
1599  if (!family_name) {
1600  status = find_name (name, 1, 3, 0, 0x409, &family_name); /* win, symbol, english-us */
1601  if (unlikely(status))
1602  goto fail;
1603  }
1604 
1605  if (!family_name) {
1606  status = find_name (name, 1, 1, 0, 0, &family_name); /* mac, roman, english */
1607  if (unlikely(status))
1608  goto fail;
1609  }
1610 
1611  if (!family_name) {
1612  status = find_name (name, 1, 3, 1, -1, &family_name); /* win, unicode, any language */
1613  if (unlikely(status))
1614  goto fail;
1615  }
1616 
1617  status = _cairo_escape_ps_name (&ps_name);
1618  if (unlikely(status))
1619  goto fail;
1620 
1621  free (name);
1622 
1623  *ps_name_out = ps_name;
1624  *font_name_out = family_name;
1625 
1626  return CAIRO_STATUS_SUCCESS;
1627 
1628 fail:
1629  free (name);
1630  free (ps_name);
1631  free (family_name);
1632  *ps_name_out = NULL;
1633  *font_name_out = NULL;
1634 
1635  return status;
1636 }
1637 
1640  int *weight,
1641  cairo_bool_t *bold,
1643 {
1646  tt_os2_t os2;
1647  unsigned long size;
1648  uint16_t selection;
1649 
1650  backend = scaled_font->backend;
1651  if (!backend->load_truetype_table)
1653 
1654  size = 0;
1655  status = backend->load_truetype_table (scaled_font,
1656  TT_TAG_OS2, 0,
1657  NULL,
1658  &size);
1659  if (status)
1660  return status;
1661 
1662  if (size < sizeof(os2))
1664 
1665  size = sizeof (os2);
1666  status = backend->load_truetype_table (scaled_font,
1667  TT_TAG_OS2, 0,
1668  (unsigned char *) &os2,
1669  &size);
1670  if (status)
1671  return status;
1672 
1673  *weight = be16_to_cpu (os2.usWeightClass);
1674  selection = be16_to_cpu (os2.fsSelection);
1675  *bold = (selection & TT_FS_SELECTION_BOLD) ? TRUE : FALSE;
1676  *italic = (selection & TT_FS_SELECTION_ITALIC) ? TRUE : FALSE;
1677 
1678  return CAIRO_STATUS_SUCCESS;
1679 }
1680 
1681 #endif /* CAIRO_HAS_FONT_SUBSET */
return _Result< 0 ? -1 :_Result;} #line 1069 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnwprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1091 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, va_list _ArgList) { return _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1108 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _ArgList) { return _vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1133 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1179 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1196 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __vswprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1212 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf(wchar_t *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1227 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1243 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1264 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1281 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1283 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1312 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1347 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_l(_Format,((void *) 0), _ArgList);} #line 1361 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1380 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1394 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __swprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1414 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1435 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf(wchar_t *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1454 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1474 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "__swprintf_l_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __swprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vswprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __vswprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "swprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swprintf(wchar_t *_Buffer, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vswprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vswprintf(wchar_t *_Buffer, wchar_t const *_Format, va_list _Args);__inline int __cdecl _swprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1511 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1532 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1534 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1562 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1582 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1603 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1623 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1646 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1668 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1711 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1737 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1755 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1774 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1792 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #pragma warning(push) #pragma warning(disable:4141 6054) #pragma warning(pop) #line 1856 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" int __cdecl __stdio_common_vswscanf(unsigned __int64 _Options, wchar_t const *_Buffer, size_t _BufferCount, wchar_t const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vswscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1897 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf(wchar_t const *_Buffer, wchar_t const *_Format, va_list _ArgList) { return _vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1947 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1949 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1976 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1995 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_swscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2015 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "swscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl swscanf(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2034 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2054 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 2077 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2100 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2122 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2143 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) typedef __int64 fpos_t;errno_t __cdecl _get_stream_buffer_pointers(FILE *_Stream, char ***_Base, char ***_Pointer, int **_Count);errno_t __cdecl clearerr_s(FILE *_Stream);errno_t __cdecl fopen_s(FILE **_Stream, char const *_FileName, char const *_Mode);size_t __cdecl fread_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);errno_t __cdecl freopen_s(FILE **_Stream, char const *_FileName, char const *_Mode, FILE *_OldStream);char *__cdecl gets_s(char *_Buffer, rsize_t _Size);errno_t __cdecl tmpfile_s(FILE **_Stream);errno_t __cdecl tmpnam_s(char *_Buffer, rsize_t _Size);#line 145 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl clearerr(FILE *_Stream);int __cdecl fclose(FILE *_Stream);int __cdecl _fcloseall(void);FILE *__cdecl _fdopen(int _FileHandle, char const *_Mode);int __cdecl feof(FILE *_Stream);int __cdecl ferror(FILE *_Stream);int __cdecl fflush(FILE *_Stream);int __cdecl fgetc(FILE *_Stream);int __cdecl _fgetchar(void);int __cdecl fgetpos(FILE *_Stream, fpos_t *_Position);char *__cdecl fgets(char *_Buffer, int _MaxCount, FILE *_Stream);int __cdecl _fileno(FILE *_Stream);int __cdecl _flushall(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "fopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl fopen(char const *_FileName, char const *_Mode);int __cdecl fputc(int _Character, FILE *_Stream);int __cdecl _fputchar(int _Character);int __cdecl fputs(char const *_Buffer, FILE *_Stream);size_t __cdecl fread(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);__declspec(deprecated("This function or variable may be unsafe. Consider using " "freopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl freopen(char const *_FileName, char const *_Mode, FILE *_Stream);FILE *__cdecl _fsopen(char const *_FileName, char const *_Mode, int _ShFlag);int __cdecl fsetpos(FILE *_Stream, fpos_t const *_Position);int __cdecl fseek(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl ftell(FILE *_Stream);__int64 __cdecl _ftelli64(FILE *_Stream);size_t __cdecl fwrite(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl getc(FILE *_Stream);int __cdecl getchar(void);int __cdecl _getmaxstdio(void);int __cdecl _getw(FILE *_Stream);void __cdecl perror(char const *_ErrorMessage);int __cdecl _pclose(FILE *_Stream);FILE *__cdecl _popen(char const *_Command, char const *_Mode);#line 344 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl putc(int _Character, FILE *_Stream);int __cdecl putchar(int _Character);int __cdecl puts(char const *_Buffer);int __cdecl _putw(int _Word, FILE *_Stream);int __cdecl remove(char const *_FileName);int __cdecl rename(char const *_OldFileName, char const *_NewFileName);int __cdecl _unlink(char const *_FileName);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_unlink" ". See online help for details.")) int __cdecl unlink(char const *_FileName);#line 391 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl rewind(FILE *_Stream);int __cdecl _rmtmp(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "setvbuf" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) void __cdecl setbuf(FILE *_Stream, char *_Buffer);int __cdecl _setmaxstdio(int _Maximum);int __cdecl setvbuf(FILE *_Stream, char *_Buffer, int _Mode, size_t _Size);__declspec(allocator) char *__cdecl _tempnam(char const *_DirectoryName, char const *_FilePrefix);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpfile_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl tmpfile(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpnam_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl tmpnam(char *_Buffer);int __cdecl ungetc(int _Character, FILE *_Stream);void __cdecl _lock_file(FILE *_Stream);void __cdecl _unlock_file(FILE *_Stream);int __cdecl _fclose_nolock(FILE *_Stream);int __cdecl _fflush_nolock(FILE *_Stream);int __cdecl _fgetc_nolock(FILE *_Stream);int __cdecl _fputc_nolock(int _Character, FILE *_Stream);size_t __cdecl _fread_nolock(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);size_t __cdecl _fread_nolock_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _fseek_nolock(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64_nolock(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl _ftell_nolock(FILE *_Stream);__int64 __cdecl _ftelli64_nolock(FILE *_Stream);size_t __cdecl _fwrite_nolock(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _getc_nolock(FILE *_Stream);int __cdecl _putc_nolock(int _Character, FILE *_Stream);int __cdecl _ungetc_nolock(int _Character, FILE *_Stream);int *__cdecl __p__commode(void);#line 596 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfprintf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_s(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_p(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vfprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 648 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 662 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_s((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 677 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 693 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 695 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_p((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 710 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);} #line 724 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 738 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf(char const *const _Format, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 751 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 765 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf_s(char const *const _Format, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 780 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 796 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p(char const *const _Format, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 809 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 828 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 846 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl _set_printf_count_output(int _Value);int __cdecl _get_printf_count_output(void);__inline int __cdecl _fprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 871 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 891 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 893 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 948 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 965 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 983 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1002 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1004 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1022 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1039 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfscanf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _Arglist);__inline int __cdecl _vfscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options()), _Stream, _Format, _Locale, _ArgList);} #line 1070 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1084 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Stream, _Format, _Locale, _ArgList);} #line 1101 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1118 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1120 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1134 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf(char const *const _Format, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1147 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1161 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf_s(char const *const _Format, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1176 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1178 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _fscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1197 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "fscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl fscanf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1215 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1234 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fscanf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1254 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_scanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _scanf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1274 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "scanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl scanf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1291 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scanf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1309 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl scanf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1330 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsprintf(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsnprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, size_t _MaxCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_p(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1399 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1415 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);return _Result< 0 ? -1 :_Result;} #line 1446 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1462 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl vsprintf(char *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1477 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1498 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1516 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1526 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1547 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1563 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1585 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1602 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1630 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1641 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1659 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf(char const *const _Format, va_list _ArgList) { return _vscprintf_l(_Format,((void *) 0), _ArgList);} #line 1672 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p(char const *const _Format, va_list _ArgList) { return _vscprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1703 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1723 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1739 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1761 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf(char *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl sprintf(char *_Buffer, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl vsprintf(char *_Buffer, char const *_Format, va_list _Args);__inline int __cdecl _sprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1810 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1832 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1834 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1862 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1882 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1905 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1936 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1956 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _snprintf(char *_Buffer, size_t _BufferCount, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _vsnprintf(char *_Buffer, size_t _BufferCount, char const *_Format, va_list _Args);__inline int __cdecl _snprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1986 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2006 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2028 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2049 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2092 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2110 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p(_Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2127 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsscanf(unsigned __int64 _Options, char const *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vsscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2158 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsscanf(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2172 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2189 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __inline int __cdecl vsscanf_s(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2208 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) #line 2219 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2238 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl sscanf(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2275 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sscanf_s(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsscanf_s(_Buffer, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2297 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 2299 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2326 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2349 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2374 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2397 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_tempnam" ". See online help for details.")) char *__cdecl tempnam(char const *_Directory, char const *_FilePrefix);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fcloseall" ". See online help for details.")) int __cdecl fcloseall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fdopen" ". See online help for details.")) FILE *__cdecl fdopen(int _FileHandle, char const *_Format);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fgetchar" ". See online help for details.")) int __cdecl fgetchar(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fileno" ". See online help for details.")) int __cdecl fileno(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_flushall" ". See online help for details.")) int __cdecl flushall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fputchar" ". See online help for details.")) int __cdecl fputchar(int _Ch);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_getw" ". See online help for details.")) int __cdecl getw(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_putw" ". See online help for details.")) int __cdecl putw(int _Ch, FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_rmtmp" ". See online help for details.")) int __cdecl rmtmp(void);#line 2441 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h"__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma once#pragma once#pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int *__cdecl _errno(void);errno_t __cdecl _set_errno(int _Value);errno_t __cdecl _get_errno(int *_Value);unsigned long *__cdecl __doserrno(void);errno_t __cdecl _set_doserrno(unsigned long _Value);errno_t __cdecl _get_doserrno(unsigned long *_Value);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) void *__cdecl memchr(void const *_Buf, int _Val, size_t _MaxCount);int __cdecl memcmp(void const *_Buf1, void const *_Buf2, size_t _Size);void *__cdecl memcpy(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memmove(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memset(void *_Dst, int _Val, size_t _Size);char *__cdecl strchr(char const *_Str, int _Val);char *__cdecl strrchr(char const *_Str, int _Ch);char *__cdecl strstr(char const *_Str, char const *_SubStr);wchar_t *__cdecl wcschr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsrchr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsstr(wchar_t const *_Str, wchar_t const *_SubStr);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) static __inline errno_t __cdecl memcpy_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;if(_Source==((void *) 0)||_DestinationSize< _SourceSize) { memset(_Destination, 0, _DestinationSize);{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;return 22 ;} memcpy(_Destination, _Source, _SourceSize);return 0;} static __inline errno_t __cdecl memmove_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;memmove(_Destination, _Source, _SourceSize);return 0;}#pragma warning(pop) __pragma(pack(pop))#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int __cdecl _memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);int __cdecl _memicmp_l(void const *_Buf1, void const *_Buf2, size_t _Size, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memccpy" ". See online help for details.")) void *__cdecl memccpy(void *_Dst, void const *_Src, int _Val, size_t _Size);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memicmp" ". See online help for details.")) int __cdecl memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl wcscat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcscpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcsncat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);errno_t __cdecl wcsncpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);wchar_t *__cdecl wcstok_s(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);__declspec(allocator) wchar_t *__cdecl _wcsdup(wchar_t const *_String);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscat(wchar_t *_Destination, wchar_t const *_Source);int __cdecl wcscmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscpy(wchar_t *_Destination, wchar_t const *_Source);size_t __cdecl wcscspn(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcslen(wchar_t const *_String);size_t __cdecl wcsnlen(wchar_t const *_Source, size_t _MaxCount);static __inline size_t __cdecl wcsnlen_s(wchar_t const *_Source, size_t _MaxCount) { return(_Source==0) ? 0 :wcsnlen(_Source, _MaxCount);}__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncat(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);int __cdecl wcsncmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncpy(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);wchar_t *__cdecl wcspbrk(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcsspn(wchar_t const *_String, wchar_t const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcstok(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);#line 237 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstring.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) static __inline wchar_t *__cdecl _wcstok(wchar_t *const _String, wchar_t const *const _Delimiter) { return wcstok(_String, _Delimiter, 0);} __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcserror(int _ErrorNumber);errno_t __cdecl _wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, int _ErrorNumber);__declspec(deprecated("This function or variable may be unsafe. Consider using " "__wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl __wcserror(wchar_t const *_String);errno_t __cdecl __wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, wchar_t const *_ErrorMessage);int __cdecl _wcsicmp(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicmp_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicmp_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);errno_t __cdecl _wcsnset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);wchar_t *__cdecl _wcsrev(wchar_t *_String);errno_t __cdecl _wcsset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsset(wchar_t *_String, wchar_t _Value);errno_t __cdecl _wcslwr_s(wchar_t *_String, size_t _SizeInWords);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr(wchar_t *_String);errno_t __cdecl _wcslwr_s_l(wchar_t *_String, size_t _SizeInWords, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr_l(wchar_t *_String, _locale_t _Locale);errno_t __cdecl _wcsupr_s(wchar_t *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr(wchar_t *_String);errno_t __cdecl _wcsupr_s_l(wchar_t *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr_l(wchar_t *_String, _locale_t _Locale);size_t __cdecl wcsxfrm(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount);size_t __cdecl _wcsxfrm_l(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount, _locale_t _Locale);int __cdecl wcscoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcscoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsicoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsncoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsncoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _wcsnicoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsdup" ". See online help for details.")) wchar_t *__cdecl wcsdup(wchar_t const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicmp" ". See online help for details.")) int __cdecl wcsicmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnicmp" ". See online help for details.")) int __cdecl wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnset" ". See online help for details.")) wchar_t *__cdecl wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsrev" ". See online help for details.")) wchar_t *__cdecl wcsrev(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsset" ". See online help for details.")) wchar_t *__cdecl wcsset(wchar_t *_String, wchar_t _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcslwr" ". See online help for details.")) wchar_t *__cdecl wcslwr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsupr" ". See online help for details.")) wchar_t *__cdecl wcsupr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicoll" ". See online help for details.")) int __cdecl wcsicoll(wchar_t const *_String1, wchar_t const *_String2);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl strcpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strcat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strerror_s(char *_Buffer, size_t _SizeInBytes, int _ErrorNumber);errno_t __cdecl strncat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);errno_t __cdecl strncpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);char *__cdecl strtok_s(char *_String, char const *_Delimiter, char **_Context);void *__cdecl _memccpy(void *_Dst, void const *_Src, int _Val, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcat(char *_Destination, char const *_Source);int __cdecl strcmp(char const *_Str1, char const *_Str2);int __cdecl _strcmpi(char const *_String1, char const *_String2);int __cdecl strcoll(char const *_String1, char const *_String2);int __cdecl _strcoll_l(char const *_String1, char const *_String2, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcpy(char *_Destination, char const *_Source);size_t __cdecl strcspn(char const *_Str, char const *_Control);__declspec(allocator) char *__cdecl _strdup(char const *_Source);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strerror(char const *_ErrorMessage);errno_t __cdecl _strerror_s(char *_Buffer, size_t _SizeInBytes, char const *_ErrorMessage);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strerror(int _ErrorMessage);int __cdecl _stricmp(char const *_String1, char const *_String2);int __cdecl _stricoll(char const *_String1, char const *_String2);int __cdecl _stricoll_l(char const *_String1, char const *_String2, _locale_t _Locale);int __cdecl _stricmp_l(char const *_String1, char const *_String2, _locale_t _Locale);size_t __cdecl strlen(char const *_Str);errno_t __cdecl _strlwr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr(char *_String);errno_t __cdecl _strlwr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr_l(char *_String, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncat(char *_Destination, char const *_Source, size_t _Count);int __cdecl strncmp(char const *_Str1, char const *_Str2, size_t _MaxCount);int __cdecl _strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicmp_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strnicoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strncoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strncoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);size_t __cdecl __strncnt(char const *_String, size_t _Count);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncpy(char *_Destination, char const *_Source, size_t _Count);size_t __cdecl strnlen(char const *_String, size_t _MaxCount);static __inline size_t __cdecl strnlen_s(char const *_String, size_t _MaxCount) { return _String==0 ? 0 :strnlen(_String, _MaxCount);} errno_t __cdecl _strnset_s(char *_String, size_t _SizeInBytes, int _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strnset(char *_Destination, int _Value, size_t _Count);char *__cdecl strpbrk(char const *_Str, char const *_Control);char *__cdecl _strrev(char *_Str);errno_t __cdecl _strset_s(char *_Destination, size_t _DestinationSize, int _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strset(char *_Destination, int _Value);size_t __cdecl strspn(char const *_Str, char const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strtok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strtok(char *_String, char const *_Delimiter);errno_t __cdecl _strupr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr(char *_String);errno_t __cdecl _strupr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr_l(char *_String, _locale_t _Locale);size_t __cdecl strxfrm(char *_Destination, char const *_Source, size_t _MaxCount);size_t __cdecl _strxfrm_l(char *_Destination, char const *_Source, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strdup" ". See online help for details.")) char *__cdecl strdup(char const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strcmpi" ". See online help for details.")) int __cdecl strcmpi(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_stricmp" ". See online help for details.")) int __cdecl stricmp(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strlwr" ". See online help for details.")) char *__cdecl strlwr(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnicmp" ". See online help for details.")) int __cdecl strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnset" ". See online help for details.")) char *__cdecl strnset(char *_String, int _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strrev" ". See online help for details.")) char *__cdecl strrev(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strset" ". See online help for details.")) char *__cdecl strset(char *_String, int _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strupr" ". See online help for details.")) char *__cdecl strupr(char *_String);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) __pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) typedef unsigned short _ino_t;typedef _ino_t ino_t;#line 24 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef unsigned int _dev_t;typedef _dev_t dev_t;#line 36 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef long _off_t;typedef _off_t off_t;#line 48 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h"#pragma warning(pop) typedef char *sds;#pragma pack(push, 1) struct sdshdr5 { unsigned char flags;char buf[];};struct sdshdr8 { uint8_t len;uint8_t alloc;unsigned char flags;char buf[];};struct sdshdr16 { uint16_t len;uint16_t alloc;unsigned char flags;char buf[];};struct sdshdr32 { uint32_t len;uint32_t alloc;unsigned char flags;char buf[];};struct sdshdr64 { uint64_t len;uint64_t alloc;unsigned char flags;char buf[];};#pragma pack(pop) static inline size_t sdslen(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :return((flags) >> 3) ;case 1 :return((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len;case 2 :return((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len;case 3 :return((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) ->len;case 4 :return((struct sdshdr64 *)((s) -(sizeof(struct sdshdr64)))) ->len;} return 0;}static inline size_t sdsavail(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ return 0;} case 1 :{ struct sdshdr8 *sh=(void *)((s) -(sizeof(struct sdshdr8)));;return sh->alloc - sh->len;} case 2 :{ struct sdshdr16 *sh=(void *)((s) -(sizeof(struct sdshdr16)));;return sh->alloc - sh->len;} case 3 :{ struct sdshdr32 *sh=(void *)((s) -(sizeof(struct sdshdr32)));;return sh->alloc - sh->len;} case 4 :{ struct sdshdr64 *sh=(void *)((s) -(sizeof(struct sdshdr64)));;return sh->alloc - sh->len;} } return 0;}static inline void sdssetlen(sds s, size_t newlen) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ unsigned char *fp=((unsigned char *) s) - 1;*fp=0|(newlen<< 3);} break;case 1 :((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len=(uint8_t) newlen;break;case 2 :((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len=(uint16_t) newlen;break;case 3 :((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) -> len
Definition: CPAL.d:15583
#define strdup
Definition: Utility.h:167
long * italic
Definition: afm2tfm.c:1034
#define font
Definition: aptex-macros.h:175
#define head
Definition: aptex-macros.h:513
#define name
#define language
Definition: aptex-macros.h:837
#define next(a)
Definition: aptex-macros.h:924
cairo_status_t _cairo_array_append_multiple(cairo_array_t *array, const void *elements, unsigned int num_elements)
Definition: cairo-array.c:281
void _cairo_array_fini(cairo_array_t *array)
Definition: cairo-array.c:75
cairo_status_t _cairo_array_grow_by(cairo_array_t *array, unsigned int additional)
Definition: cairo-array.c:89
cairo_status_t _cairo_array_allocate(cairo_array_t *array, unsigned int num_elements, void **elements)
Definition: cairo-array.c:311
unsigned int _cairo_array_num_elements(const cairo_array_t *array)
Definition: cairo-array.c:338
void * _cairo_array_index(cairo_array_t *array, unsigned int index)
Definition: cairo-array.c:166
void _cairo_array_truncate(cairo_array_t *array, unsigned int num_elements)
Definition: cairo-array.c:137
void _cairo_array_init(cairo_array_t *array, unsigned int element_size)
Definition: cairo-array.c:58
cairo_status_t _cairo_array_append(cairo_array_t *array, const void *element)
Definition: cairo-array.c:262
#define _cairo_status_set_error(status, err)
#define CAIRO_INT_STATUS_SUCCESS
cairo_status_t _cairo_error(cairo_status_t status)
Definition: cairo-error.c:65
enum _cairo_int_status cairo_int_status_t
@ CAIRO_INT_STATUS_UNSUPPORTED
#define _cairo_status_is_error(status)
#define _cairo_malloc(size)
#define _cairo_malloc_ab_plus_c(a, size, c)
cairo_int_status_t _cairo_escape_ps_name(char **ps_name)
int _cairo_unicode_to_winansi(unsigned long unicode)
#define TT_TAG_prep
#define TT_TAG_loca
struct _tt_hhea tt_hhea_t
#define TT_MORE_COMPONENTS
#define TT_TAG_hhea
#define TT_WE_HAVE_A_SCALE
#define TT_TAG_cmap
#define TT_TAG_glyf
#define TT_TAG_cvt
#define TT_FS_SELECTION_ITALIC
#define TT_TAG_name
struct _tt_maxp tt_maxp_t
#define TT_WE_HAVE_AN_X_AND_Y_SCALE
#define TT_TAG_hmtx
struct _tt_cmap_index tt_cmap_index_t
struct _tt_head tt_head_t
#define TT_ARG_1_AND_2_ARE_WORDS
#define TT_FS_SELECTION_BOLD
#define TT_TAG_maxp
#define TT_TAG_head
#define TT_TAG_OS2
#define TT_WE_HAVE_A_TWO_BY_TWO
#define TT_TAG_fpgm
struct _cmap_unicode_range cmap_unicode_range_t
cairo_status_t _cairo_truetype_subset_init_ps(cairo_truetype_subset_t *truetype_subset, cairo_scaled_font_subset_t *font_subset)
void _cairo_truetype_subset_fini(cairo_truetype_subset_t *subset)
cairo_int_status_t _cairo_truetype_get_style(cairo_scaled_font_t *scaled_font, int *weight, cairo_bool_t *bold, cairo_bool_t *italic)
cairo_int_status_t _cairo_truetype_index_to_ucs4(cairo_scaled_font_t *scaled_font, unsigned long index, uint32_t *ucs4)
cairo_status_t _cairo_truetype_subset_init_pdf(cairo_truetype_subset_t *truetype_subset, cairo_scaled_font_subset_t *font_subset)
cairo_int_status_t _cairo_truetype_read_font_name(cairo_scaled_font_t *scaled_font, char **ps_name_out, char **font_name_out)
int _cairo_ucs4_to_utf8(uint32_t unicode, char *utf8)
int cairo_bool_t
Definition: cairo.h:107
@ CAIRO_STATUS_SUCCESS
Definition: cairo.h:315
@ CAIRO_STATUS_NO_MEMORY
Definition: cairo.h:317
enum _cairo_status cairo_status_t
static uint32_t cpu_to_be32(uint32_t v)
Definition: cairoint.h:236
static uint16_t cpu_to_be16(uint16_t v)
Definition: cairoint.h:224
static uint16_t be16_to_cpu(uint16_t v)
Definition: cairoint.h:230
static uint32_t be32_to_cpu(uint32_t v)
Definition: cairoint.h:242
#define ARRAY_LENGTH(__array)
Definition: cairoint.h:137
static cairo_int_status_t _cairo_truetype_reverse_cmap(cairo_scaled_font_t *scaled_font, unsigned long table_offset, unsigned long index, uint32_t *ucs4)
static cairo_status_t cairo_truetype_font_remap_composite_glyph(cairo_truetype_font_t *font, unsigned char *buffer, unsigned long size)
static cairo_status_t cairo_truetype_font_write_generic_table(cairo_truetype_font_t *font, unsigned long tag)
static void cairo_truetype_font_destroy(cairo_truetype_font_t *font)
static cairo_status_t cairo_truetype_font_write_cmap_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_write_hhea_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_use_glyph(cairo_truetype_font_t *font, unsigned short glyph, unsigned short *out)
static uint32_t cairo_truetype_font_calculate_checksum(cairo_truetype_font_t *font, unsigned long start, unsigned long end)
static cairo_status_t cairo_truetype_font_align_output(cairo_truetype_font_t *font, unsigned long *aligned)
static cairo_status_t _cairo_truetype_font_create(cairo_scaled_font_subset_t *scaled_font_subset, cairo_bool_t is_pdf, cairo_truetype_font_t **font_return)
#define MAX_FONT_NAME_LENGTH
static cairo_status_t cairo_truetype_font_write_head_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_write_loca_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_write_maxp_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_write_hmtx_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_write_glyf_table(cairo_truetype_font_t *font, unsigned long tag)
static cairo_status_t cairo_truetype_font_allocate_write_buffer(cairo_truetype_font_t *font, size_t length, unsigned char **buffer)
#define check(T, S)
static void cairo_truetype_font_add_truetype_table(cairo_truetype_font_t *font, unsigned long tag, cairo_status_t(*write)(cairo_truetype_font_t *font, unsigned long tag), int pos)
static void cairo_truetype_font_create_truetype_table_list(cairo_truetype_font_t *font)
static cairo_status_t cairo_truetype_subset_init_internal(cairo_truetype_subset_t *truetype_subset, cairo_scaled_font_subset_t *font_subset, cairo_bool_t is_pdf)
static cairo_status_t find_name(tt_name_t *name, int name_id, int platform, int encoding, int language, char **str_out)
#define SFNT_STRING_MAX_LENGTH
static void cairo_truetype_font_write(cairo_truetype_font_t *font, const void *data, size_t length)
static void cairo_truetype_font_write_be16(cairo_truetype_font_t *font, uint16_t value)
static cmap_unicode_range_t winansi_unicode_ranges[]
static cairo_status_t cairo_truetype_font_check_boundary(cairo_truetype_font_t *font, unsigned long boundary)
static void cairo_truetype_font_write_be32(cairo_truetype_font_t *font, uint32_t value)
static cairo_status_t cairo_truetype_font_write_offset_table(cairo_truetype_font_t *font)
static cairo_status_t cairo_truetype_font_generate(cairo_truetype_font_t *font, const char **data, unsigned long *length, const unsigned long **string_offsets, unsigned long *num_strings)
static void cairo_truetype_font_update_entry(cairo_truetype_font_t *font, int index, unsigned long tag, unsigned long start, unsigned long end)
#define SFNT_VERSION
static cairo_status_t _cairo_truetype_font_set_error(cairo_truetype_font_t *font, cairo_status_t status)
@ FALSE
Definition: dd.h:101
@ TRUE
Definition: dd.h:102
#define free(a)
Definition: decNumber.cpp:310
struct rect data
Definition: dvipdfm.c:64
TT_OS2 * os2
Definition: ftlib.c:50
static FIELD_PTR begin
Definition: genind.c:37
#define c(n)
Definition: gpos-common.c:150
#define memcpy(d, s, n)
Definition: gsftopk.c:64
FILE * out
Definition: hbf2gf.c:286
pad
Definition: in_pcx.cpp:455
#define unlikely(x)
Definition: jbig2arith.cc:116
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p scientific f u
Definition: afcover.h:88
small capitals from c petite p
Definition: afcover.h:72
small capitals from c petite p scientific i
Definition: afcover.h:80
sizeof(AF_ModuleRec)
T1_FIELD_DICT_FONTDICT family_name
Definition: t1tokens.h:30
signed short int16_t
Definition: stdint.h:76
unsigned short uint16_t
Definition: stdint.h:79
unsigned int uint32_t
Definition: stdint.h:80
voidp calloc()
unsigned short platform
Definition: cidtype2.c:153
#define buf
pdf_obj * entry
Definition: pdfdoc.c:64
#define write
Definition: win32lib.h:103
#define length(c)
Definition: ctangleboot.c:65
union hdr header
Definition: pbmtomacp.c:291
#define snprintf
Definition: snprintf.c:41
const int * pos
Definition: combiners.h:905
static mrb_value range_size(mrb_state *mrb, mrb_value range)
Definition: range.c:74
utf< uint8 > utf8
Definition: UtfCodec.h:249
static int delta
Definition: pbmtolj.c:36
integer checksum
Definition: pbmtopk.c:63
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld cleanup[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld_src SRC pixld MASK if DST_R else pixld DST_R endif if src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head if pixblock_size cache_preload_simple endif process_pixblock_tail pixinterleave dst_w_basereg irp if pixblock_size chunk_size tst beq if DST_W else pixst DST_W else mov ORIG_W endif add lsl if lsl endif if lsl endif lsl endif lsl endif lsl endif subs mov DST_W if regs_shortage str endif bge start_of_loop_label endm macro generate_composite_function
#define index(s, c)
Definition: plain2.h:351
static int size
Definition: ppmlabel.c:24
bstring c int memset(void *s, int c, int length)
static long bytes
Definition: psutil.c:35
#define map
#define status
#define flags
static backend_t backend[]
Definition: main.c:103
#define str(s)
Definition: sh6.c:399
#define int32_t
Definition: stdint.in.h:167
#define int16_t
Definition: stdint.in.h:160
unsigned int font_id
Definition: cairoint.h:492
cairo_scaled_font_t * scaled_font
Definition: cairoint.h:491
unsigned int subset_id
Definition: cairoint.h:493
const cairo_scaled_font_backend_t * backend
struct _cairo_truetype_font::@463 base
cairo_scaled_font_subset_t * scaled_font_subset
const cairo_scaled_font_backend_t * backend
tt_composite_glyph_t glyph
Definition: utils.c:300
Definition: pbmfont.h:11
Definition: pbmfont.h:4
Definition: ttf.h:354
Definition: mendex.h:20
Definition: ttf.h:413
Definition: ttf.h:443
unsigned long location
Definition: table.h:30
cairo_status_t(* write)(cairo_truetype_font_t *font, unsigned long tag)
unsigned long tag
Definition: xmlparse.c:179
ch
Definition: t4ht.c:1443
int j
Definition: t4ht.c:1589
*job_name strlen((char *) job_name) - 4)
found
Definition: tex4ht.c:5000
tag int tag
Definition: tex4ht.c:2554
TT_CharMap cmap
Definition: ttf2pfb.c:163
TT_Glyph glyph
Definition: ttf2pfb.c:162
static int long_offsets
Definition: ttf.c:65
Definition: obx.h:51
#define FAIL(ec)
@ start
Definition: preamble.c:52
#define buffer
Definition: xmlparse.c:611
#define end(cp)
Definition: zic.c:71