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)  

splineutil2.c
Go to the documentation of this file.
1 /* -*- coding: utf-8 -*- */
2 /* Copyright (C) 2000-2012 by George Williams */
3 /*
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6 
7  * Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9 
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13 
14  * The name of the author may not be used to endorse or promote products
15  * derived from this software without specific prior written permission.
16 
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 #include "fontforge.h"
29 #include <math.h>
30 #include <time.h>
31 
32 int new_em_size = 1000;
40 int snaptoint=0;
41 
42 /*#define DEBUG 1*/
43 
44 #if defined( FONTFORGE_CONFIG_USE_DOUBLE )
45 # define RE_NearZero .00000001
46 # define RE_Factor (1024.0*1024.0*1024.0*1024.0*1024.0*2.0) /* 52 bits => divide by 2^51 */
47 #else
48 # define RE_NearZero .00001
49 # define RE_Factor (1024.0*1024.0*4.0) /* 23 bits => divide by 2^22 */
50 #endif
51 
53  bigreal temp=v1*v2;
54  bigreal re;
55 
56  if ( temp<0 ) /* Ok, if the two values are on different sides of 0 there */
57 return( false ); /* is no way they can be within a rounding error of each other */
58  else if ( temp==0 ) {
59  if ( v1==0 )
60 return( v2<RE_NearZero && v2>-RE_NearZero );
61  else
62 return( v1<RE_NearZero && v1>-RE_NearZero );
63  } else if ( v1>0 ) {
64  if ( v1>v2 ) { /* Rounding error from the biggest absolute value */
65  re = v1/ (RE_Factor/4);
66 return( v1-v2 < re );
67  } else {
68  re = v2/ (RE_Factor/4);
69 return( v2-v1 < re );
70  }
71  } else {
72  if ( v1<v2 ) {
73  re = v1/ (RE_Factor/4); /* This will be a negative number */
74 return( v1-v2 > re );
75  } else {
76  re = v2/ (RE_Factor/4);
77 return( v2-v1 > re );
78  }
79  }
80 }
81 
83  bigreal temp=v1*v2;
84  bigreal re;
85 
86  if ( temp<0 ) /* Ok, if the two values are on different sides of 0 there */
87 return( false ); /* is no way they can be within a rounding error of each other */
88  else if ( temp==0 ) {
89  if ( v1==0 )
90 return( v2<RE_NearZero && v2>-RE_NearZero );
91  else
92 return( v1<RE_NearZero && v1>-RE_NearZero );
93  } else if ( v1>0 ) {
94  if ( v1>v2 ) { /* Rounding error from the biggest absolute value */
95  re = v1/ (RE_Factor/16);
96 return( v1-v2 < re );
97  } else {
98  re = v2/ (RE_Factor/16);
99 return( v2-v1 < re );
100  }
101  } else {
102  if ( v1<v2 ) {
103  re = v1/ (RE_Factor/16); /* This will be a negative number */
104 return( v1-v2 > re );
105  } else {
106  re = v2/ (RE_Factor/16);
107 return( v2-v1 > re );
108  }
109  }
110 }
111 
113  real d;
114 
115 #ifdef FONTFORGE_CONFIG_USE_DOUBLE
116  if ( a==0 )
117 return( b>-1e-8 && b<1e-8 );
118  if ( b==0 )
119 return( a>-1e-8 && a<1e-8 );
120 
121  d = a/(1024*1024.);
122 #else /* For floats */
123  if ( a==0 )
124 return( b>-1e-5 && b<1e-5 );
125  if ( b==0 )
126 return( a>-1e-5 && a<1e-5 );
127 
128  d = a/(1024*64.);
129 #endif
130  a-=b;
131  if ( d<0 )
132 return( a>d && a<-d );
133  else
134 return( a>-d && a<d );
135 }
136 
138 
139  a-=b;
140 return( a<.001 && a>-.001 );
141 }
142 
144 
145  if ( a==0 ) {
146  if ( b<.0001 && b>-.0001 )
147 return( true );
148  } else if ( b==0 ) {
149  if ( a<.0001 && a>-.0001 )
150 return( true );
151  } else {
152  a /= b;
153  if ( a>=.95 && a<=1.05 )
154 return( true );
155  }
156 return( false );
157 }
158 
159 int RealWithin(real a,real b,real fudge) {
160 
161 return( b>=a-fudge && b<=a+fudge );
162 }
163 
164 static int MinMaxWithin(Spline *spline) {
165  extended dx, dy;
166  int which;
167  extended t1, t2;
168  extended w;
169  /* We know that this "spline" is basically one dimensional. As long as its*/
170  /* extrema are between the start and end points on that line then we can */
171  /* treat it as a line. If the extrema are way outside the line segment */
172  /* then it's a line that backtracks on itself */
173 
174  if ( (dx = spline->to->me.x - spline->from->me.x)<0 ) dx = -dx;
175  if ( (dy = spline->to->me.y - spline->from->me.y)<0 ) dy = -dy;
176  which = dx<dy;
177  SplineFindExtrema(&spline->splines[which],&t1,&t2);
178  if ( t1==-1 )
179 return( true );
180  w = ((spline->splines[which].a*t1 + spline->splines[which].b)*t1
181  + spline->splines[which].c)*t1 + spline->splines[which].d;
182  if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) )
183  /* Close enough */;
184  else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) ||
185  (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) )
186 return( false ); /* Outside */
187 
188  w = ((spline->splines[which].a*t2 + spline->splines[which].b)*t2
189  + spline->splines[which].c)*t2 + spline->splines[which].d;
190  if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) )
191  /* Close enough */;
192  else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) ||
193  (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) )
194 return( false ); /* Outside */
195 
196 return( true );
197 }
198 
200  bigreal t1,t2, t3,t4;
201  int ret;
202 
203  if ( spline->knownlinear )
204 return( true );
205  if ( spline->knowncurved )
206 return( false );
207 
208  if ( spline->splines[0].a==0 && spline->splines[0].b==0 &&
209  spline->splines[1].a==0 && spline->splines[1].b==0 )
210 return( true );
211 
212  /* Something is linear if the control points lie on the line between the */
213  /* two base points */
214 
215  /* Vertical lines */
216  if ( RealNear(spline->from->me.x,spline->to->me.x) ) {
219  if ( ! ((spline->from->nextcp.y >= spline->from->me.y &&
220  spline->from->nextcp.y <= spline->to->me.y &&
221  spline->to->prevcp.y >= spline->from->me.y &&
222  spline->to->prevcp.y <= spline->to->me.y ) ||
223  (spline->from->nextcp.y <= spline->from->me.y &&
224  spline->from->nextcp.y >= spline->to->me.y &&
225  spline->to->prevcp.y <= spline->from->me.y &&
226  spline->to->prevcp.y >= spline->to->me.y )) )
228  /* Horizontal lines */
229  } else if ( RealNear(spline->from->me.y,spline->to->me.y) ) {
232  if ( ! ((spline->from->nextcp.x >= spline->from->me.x &&
233  spline->from->nextcp.x <= spline->to->me.x &&
234  spline->to->prevcp.x >= spline->from->me.x &&
235  spline->to->prevcp.x <= spline->to->me.x) ||
236  (spline->from->nextcp.x <= spline->from->me.x &&
237  spline->from->nextcp.x >= spline->to->me.x &&
238  spline->to->prevcp.x <= spline->from->me.x &&
239  spline->to->prevcp.x >= spline->to->me.x)) )
241  } else {
242  ret = true;
243  t1 = (spline->from->nextcp.y-spline->from->me.y)/(spline->to->me.y-spline->from->me.y);
244  t2 = (spline->from->nextcp.x-spline->from->me.x)/(spline->to->me.x-spline->from->me.x);
245  t3 = (spline->to->me.y-spline->to->prevcp.y)/(spline->to->me.y-spline->from->me.y);
246  t4 = (spline->to->me.x-spline->to->prevcp.x)/(spline->to->me.x-spline->from->me.x);
247  ret = (Within16RoundingErrors(t1,t2) || (RealApprox(t1,0) && RealApprox(t2,0))) &&
249  if ( ret ) {
250  if ( t1<0 || t2<0 || t3<0 || t4<0 ||
251  t1>1 || t2>1 || t3>1 || t4>1 )
253  }
254  }
255  spline->knowncurved = !ret;
257  if ( ret ) {
258  /* A few places that if the spline is knownlinear then its splines[?] */
259  /* are linear. So give the linear version and not that suggested by */
260  /* the control points */
261  spline->splines[0].a = spline->splines[0].b = 0;
262  spline->splines[0].d = spline->from->me.x;
263  spline->splines[0].c = spline->to->me.x-spline->from->me.x;
264  spline->splines[1].a = spline->splines[1].b = 0;
265  spline->splines[1].d = spline->from->me.y;
266  spline->splines[1].c = spline->to->me.y-spline->from->me.y;
267  }
268 return( ret );
269 }
270 
271 /* This routine should almost never be called now. It uses a flawed algorithm */
272 /* which won't produce the best results. It gets called only when the better */
273 /* approach doesn't work (singular matrices, etc.) */
274 /* Old comment, back when I was confused... */
275 /* Least squares tells us that:
276  | S(xi*ti^3) | | S(ti^6) S(ti^5) S(ti^4) S(ti^3) | | a |
277  | S(xi*ti^2) | = | S(ti^5) S(ti^4) S(ti^3) S(ti^2) | * | b |
278  | S(xi*ti) | | S(ti^4) S(ti^3) S(ti^2) S(ti) | | c |
279  | S(xi) | | S(ti^3) S(ti^2) S(ti) n | | d |
280  and the definition of a spline tells us:
281  | x1 | = | 1 1 1 1 | * (a b c d)
282  | x0 | = | 0 0 0 1 | * (a b c d)
283 So we're a bit over specified. Let's use the last two lines of least squares
284 and the 2 from the spline defn. So d==x0. Now we've got three unknowns
285 and only three equations...
286 
287 For order2 splines we've got
288  | S(xi*ti^2) | | S(ti^4) S(ti^3) S(ti^2) | | b |
289  | S(xi*ti) | = | S(ti^3) S(ti^2) S(ti) | * | c |
290  | S(xi) | | S(ti^2) S(ti) n | | d |
291  and the definition of a spline tells us:
292  | x1 | = | 1 1 1 | * (b c d)
293  | x0 | = | 0 0 1 | * (b c d)
294 =>
295  d = x0
296  b+c = x1-x0
297  S(ti^2)*b + S(ti)*c = S(xi)-n*x0
298  S(ti^2)*b + S(ti)*(x1-x0-b) = S(xi)-n*x0
299  [ S(ti^2)-S(ti) ]*b = S(xi)-S(ti)*(x1-x0) - n*x0
300 */
301 
302 static int GoodCurve(SplinePoint *sp, int check_prev ) {
303  bigreal dx, dy, lenx, leny;
304 
305  if ( sp->pointtype!=pt_curve && sp->pointtype!=pt_hvcurve )
306 return( false );
307  if ( check_prev ) {
308  dx = sp->me.x - sp->prevcp.x;
309  dy = sp->me.y - sp->prevcp.y;
310  } else {
311  dx = sp->me.x - sp->nextcp.x;
312  dy = sp->me.y - sp->nextcp.y;
313  }
314  /* If the cp is very close to the base point the point might as well be a corner */
315  if ( dx<0 ) dx = -dx;
316  if ( dy<0 ) dy = -dy;
317  if ( dx+dy<1 )
318 return( false );
319 
320  if ( check_prev ) {
321  if ( sp->prev==NULL )
322 return( true );
323  lenx = sp->me.x - sp->prev->from->me.x;
324  leny = sp->me.y - sp->prev->from->me.y;
325  } else {
326  if ( sp->next==NULL )
327 return( true );
328  lenx = sp->me.x - sp->next->to->me.x;
329  leny = sp->me.y - sp->next->to->me.y;
330  }
331  if ( lenx<0 ) lenx = -lenx;
332  if ( leny<0 ) leny = -leny;
333  if ( 50*(dx+dy) < lenx+leny )
334 return( false );
335 
336 return( true );
337 }
338 
339 /* pf == point from (start point) */
340 /* Δf == slope from (cp(from) - from) */
341 /* pt == point to (end point, t==1) */
342 /* Δt == slope to (cp(to) - to) */
343 
344 /* A spline from pf to pt with slope vectors rf*Δf, rt*Δt is: */
345 /* p(t) = pf + [ 3*rf*Δf ]*t + 3*[pt-pf+rt*Δt-2*rf*Δf] *t^2 + */
346 /* [2*pf-2*pt+3*rf*Δf-3*rt*Δt]*t^3 */
347 
348 /* So I want */
349 /* d Σ (p(t(i))-p(i))^2/ d rf == 0 */
350 /* d Σ (p(t(i))-p(i))^2/ d rt == 0 */
351 /* now... */
352 /* d Σ (p(t(i))-p(i))^2/ d rf == 0 */
353 /* => Σ 3*t*Δf*(1-2*t+t^2)*
354  * [pf-pi+ 3*(pt-pf)*t^2 + 2*(pf-pt)*t^3] +
355  * 3*[t - 2*t^2 + t^3]*Δf*rf +
356  * 3*[t^2-t^3]*Δt*rt */
357 /* and... */
358 /* d Σ (p(t(i))-p(i))^2/ d rt == 0 */
359 /* => Σ 3*t^2*Δt*(1-t)*
360  * [pf-pi+ 3*(pt-pf)*t^2 + 2*(pf-pt)*t^3] +
361  * 3*[t - 2*t^2 + t^3]*Δf*rf +
362  * 3*[t^2-t^3]*Δt*rt */
363 
364 /* Now for a long time I looked at that and saw four equations and two unknowns*/
365 /* That was I was trying to solve for x and y separately, and that doesn't work. */
366 /* There are really just two equations and each sums over both x and y components */
367 
368 /* Old comment: */
369 /* I used to do a least squares aproach adding two more to the above set of equations */
370 /* which held the slopes constant. But that didn't work very well. So instead*/
371 /* Then I tried doing the approximation, and then forcing the control points */
372 /* to be in line (witht the original slopes), getting a better approximation */
373 /* to "t" for each data point and then calculating an error array, approximating*/
374 /* it, and using that to fix up the final result */
375 /* Then I tried checking various possible cp lengths in the desired directions*/
376 /* finding the best one or two, and doing a 2D binary search using that as a */
377 /* starting point. */
378 /* And sometimes a least squares approach will give us the right answer, so */
379 /* try that too. */
380 /* This still isn't as good as I'd like it... But I haven't been able to */
381 /* improve it further yet */
382 
384  /* I ignore the constant term. It's just an unneeded addition */
385  bigreal len, t;
386  bigreal lastx = 0, lasty = 0;
387  bigreal curx, cury;
388 
389  len = 0;
390  for ( t=1.0/128; t<=1.0001 ; t+=1.0/128 ) {
391  curx = ((spline->splines[0].a*t+spline->splines[0].b)*t+spline->splines[0].c)*t;
392  cury = ((spline->splines[1].a*t+spline->splines[1].b)*t+spline->splines[1].c)*t;
393  len += sqrt( (curx-lastx)*(curx-lastx) + (cury-lasty)*(cury-lasty) );
394  lastx = curx; lasty = cury;
395  }
396 return( len );
397 }
398 
400  /* Using truetype rules, can we interpolate this point? */
401 return( !sp->dontinterpolate && !sp->nonextcp && !sp->noprevcp &&
402  !sp->roundx && !sp->roundy &&
403  (RealWithin(sp->me.x,(sp->nextcp.x+sp->prevcp.x)/2,.1) &&
404  RealWithin(sp->me.y,(sp->nextcp.y+sp->prevcp.y)/2,.1)) );
405 }
406 
408  BasePoint *ncp, *pcp;
409  BasePoint *nncp, *ppcp;
410  if ( sp->next==NULL || sp->prev==NULL )
411 return( true );
412  nncp = &sp->next->to->me;
413  if ( !sp->nonextcp ) {
414  ncp = &sp->nextcp;
415  if ( !sp->next->to->noprevcp )
416  nncp = &sp->next->to->prevcp;
417  } else if ( !sp->next->to->noprevcp )
418  ncp = &sp->next->to->prevcp;
419  else
420  ncp = nncp;
421  ppcp = &sp->prev->from->me;
422  if ( !sp->noprevcp ) {
423  pcp = &sp->prevcp;
424  if ( !sp->prev->from->nonextcp )
425  ppcp = &sp->prev->from->nextcp;
426  } else if ( !sp->prev->from->nonextcp )
427  pcp = &sp->prev->from->nextcp;
428  else
429  pcp = ppcp;
430  if ((( ncp->x<sp->me.x || (ncp->x==sp->me.x && nncp->x<sp->me.x)) &&
431  (pcp->x<sp->me.x || (pcp->x==sp->me.x && ppcp->x<sp->me.x))) ||
432  ((ncp->x>sp->me.x || (ncp->x==sp->me.x && nncp->x>sp->me.x)) &&
433  (pcp->x>sp->me.x || (pcp->x==sp->me.x && ppcp->x>sp->me.x))) ||
434  (( ncp->y<sp->me.y || (ncp->y==sp->me.y && nncp->y<sp->me.y)) &&
435  (pcp->y<sp->me.y || (pcp->y==sp->me.y && ppcp->y<sp->me.y))) ||
436  ((ncp->y>sp->me.y || (ncp->y==sp->me.y && nncp->y>sp->me.y)) &&
437  (pcp->y>sp->me.y || (pcp->y==sp->me.y && ppcp->y>sp->me.y))))
438 return( true );
439 
440  /* These aren't true points of extrema, but they probably should be treated */
441  /* as if they were */
442  if ( !sp->nonextcp && !sp->noprevcp &&
443  ((sp->me.x==sp->nextcp.x && sp->me.x==sp->prevcp.x) ||
444  (sp->me.y==sp->nextcp.y && sp->me.y==sp->prevcp.y)) )
445 return( true );
446 
447 return( false );
448 }
449 
450 /* An extremum is very close to the end-point. So close that we don't want */
451 /* to add a new point. Instead try moving the control points around */
452 /* Options: */
453 /* o if the control point is very close to the base point then remove it */
454 /* o if the slope at the endpoint is in the opposite direction from */
455 /* what we expect, then subtract off the components we don't like */
456 /* o make the slope at the end point horizontal/vertical */
457 static int ForceEndPointExtrema(Spline *s,int isto) {
458  SplinePoint *end;
459  BasePoint *cp, to, unitslope, othercpunit, myslope;
460  bigreal xdiff, ydiff, mylen, cplen, mydot, cpdot, len;
461  /* To get here we know that the extremum is extremely close to the end */
462  /* point, and adjusting the slope at the end-point may be all we need */
463  /* to do. We won't need to adjust it by much, because it is so close. */
464 
465  if ( isto ) {
466  end = s->to; cp = &end->prevcp;
467  othercpunit.x = s->from->nextcp.x - s->from->me.x;
468  othercpunit.y = s->from->nextcp.y - s->from->me.y;
469  } else {
470  end = s->from; cp = &end->nextcp;
471  othercpunit.x = s->to->prevcp.x-s->to->me.x;
472  othercpunit.y = s->to->prevcp.y-s->to->me.y;
473  }
474  cplen = othercpunit.x*othercpunit.x + othercpunit.y*othercpunit.y;
475  cplen = sqrt(cplen);
476  myslope.x = cp->x - end->me.x;
477  myslope.y = cp->y - end->me.y;
478  mylen = sqrt(myslope.x*myslope.x + myslope.y*myslope.y);
479 
480  unitslope.x = s->to->me.x - s->from->me.x;
481  unitslope.y = s->to->me.y - s->from->me.y;
482  len = unitslope.x*unitslope.x + unitslope.y*unitslope.y;
483  if ( len==0 )
484 return( -1 );
485  len = sqrt(len);
486  if ( mylen<30*len && mylen<cplen && mylen<1 ) {
487  if ( isto ) {
488  s->to->noprevcp = true;
489  s->to->prevcp = s->to->me;
490  } else {
491  s->from->nonextcp = true;
492  s->from->nextcp = s->from->me;
493  }
494  end->pointtype = pt_corner;
495  SplineRefigure(s);
496 return( true ); /* We changed the slope */
497  }
498  unitslope.x /= len; unitslope.y /= len;
499 
500  mydot = myslope.x*unitslope.y - myslope.y*unitslope.x;
501  cpdot = othercpunit.x*unitslope.y - othercpunit.y*unitslope.y;
502  if ( mydot*cpdot<0 && mylen<cplen ) {
503  /* The two control points are in opposite directions with respect to */
504  /* the main spline, and ours isn't very big, so make it point along */
505  /* the spline */
506  end->pointtype = pt_corner;
507  if ( isto ) {
508  s->to->prevcp.x = s->to->me.x - mydot*unitslope.x;
509  s->to->prevcp.y = s->to->me.y - mydot*unitslope.y;
510  } else {
511  s->from->nextcp.x = s->from->me.x + mydot*unitslope.x;
512  s->from->nextcp.y = s->from->me.y + mydot*unitslope.y;
513  }
514  SplineRefigure(s);
515 return( true ); /* We changed the slope */
516  }
517 
518  if ( (xdiff = cp->x - end->me.x)<0 ) xdiff = -xdiff;
519  if ( (ydiff = cp->y - end->me.y)<0 ) ydiff = -ydiff;
520 
521  to = *cp;
522  if ( xdiff<ydiff/10.0 && xdiff>0 ) {
523  to.x = end->me.x;
524  end->pointtype = pt_corner;
525  SPAdjustControl(end,cp,&to,s->order2);
526 return( true ); /* We changed the slope */
527  } else if ( ydiff<xdiff/10 && ydiff>0 ) {
528  to.y = end->me.y;
529  end->pointtype = pt_corner;
530  SPAdjustControl(end,cp,&to,s->order2);
531 return( true ); /* We changed the slope */
532  }
533 
534 return( -1 ); /* Didn't do anything */
535 }
536 
538  /* Sometimes we get rounding errors when converting from control points */
539  /* to spline coordinates. These rounding errors can give us false */
540  /* extrema. So do a sanity check to make sure it is possible to get */
541  /* any extrema before actually looking for them */
542 
543  if ( s->from->me.x>=s->from->nextcp.x &&
544  s->from->nextcp.x>=s->to->prevcp.x &&
545  s->to->prevcp.x>=s->to->me.x )
546 return( true );
547  if ( s->from->me.x<=s->from->nextcp.x &&
548  s->from->nextcp.x<=s->to->prevcp.x &&
549  s->to->prevcp.x<=s->to->me.x )
550 return( true );
551 
552 return( false );
553 }
554 
556  /* Sometimes we get rounding errors when converting from control points */
557  /* to spline coordinates. These rounding errors can give us false */
558  /* extrema. So do a sanity check to make sure it is possible to get */
559  /* any extrema before actually looking for them */
560 
561  if ( s->from->me.y>=s->from->nextcp.y &&
562  s->from->nextcp.y>=s->to->prevcp.y &&
563  s->to->prevcp.y>=s->to->me.y )
564 return( true );
565  if ( s->from->me.y<=s->from->nextcp.y &&
566  s->from->nextcp.y<=s->to->prevcp.y &&
567  s->to->prevcp.y<=s->to->me.y )
568 return( true );
569 
570 return( false );
571 }
572 
573 Spline *SplineAddExtrema(Spline *s,int always,real lenbound, real offsetbound,
574  DBounds *b) {
575  /* First find the extrema, if any */
576  bigreal t[4], min;
577  uint8 rmfrom[4], rmto[4];
578  int p, i,j, p_s, mini, restart, forced;
579  SplinePoint *sp;
580  real len;
581 
582  if ( !always ) {
583  real xlen, ylen;
584  xlen = (s->from->me.x-s->to->me.x);
585  ylen = (s->from->me.y-s->to->me.y);
586  len = xlen*xlen + ylen*ylen;
587  lenbound *= lenbound;
588  if ( len < lenbound ) {
589  len = SplineLength(s);
590  len *= len;
591  }
592  }
593 
594  memset(rmfrom,0,sizeof(rmfrom));
595  memset(rmto,0,sizeof(rmto));
596 
597  for (;;) {
598  if ( s->knownlinear )
599 return(s);
600  p = 0;
601  if ( Spline1DCantExtremeX(s) ) {
602  /* If the control points are at the end-points then this (1D) spline is */
603  /* basically a line. But rounding errors can give us very faint extrema */
604  /* if we look for them */
605  } else if ( s->splines[0].a!=0 ) {
606  bigreal d = 4*s->splines[0].b*s->splines[0].b-4*3*s->splines[0].a*s->splines[0].c;
607  if ( d>0 ) {
608  extended t1, t2;
609  d = sqrt(d);
610  t1 = (-2*s->splines[0].b+d)/(2*3*s->splines[0].a);
611  t2 = (-2*s->splines[0].b-d)/(2*3*s->splines[0].a);
612  t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],t1,t2);
613  t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],t2,t1);
614  }
615  } else if ( s->splines[0].b!=0 )
616  t[p++] = -s->splines[0].c/(2*s->splines[0].b);
617  if ( !always ) {
618  /* Generally we are only interested in extrema on long splines, or */
619  /* extrema which are extrema for the entire contour, not just this */
620  /* spline */
621  /* Also extrema which are very close to one of the end-points can */
622  /* be ignored. */
623  /* No they can't. But we need to remove the original point in this*/
624  /* case */
625  for ( i=0; i<p; ++i ) {
626  real x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d;
627  real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d;
628  int close_from = ( x-s->from->me.x<offsetbound && x-s->from->me.x>-offsetbound) &&
629  ( y-s->from->me.y<10*offsetbound && y-s->from->me.y>-10*offsetbound );
630  int close_to = ( x-s->to->me.x<offsetbound && x-s->to->me.x>-offsetbound) &&
631  ( y-s->to->me.y<10*offsetbound && y-s->to->me.y>-10*offsetbound );
632  int remove_from = close_from && GoodCurve(s->from,true) && !SpIsExtremum(s->from);
633  int remove_to = close_to && GoodCurve(s->to,false) && !SpIsExtremum(s->to);
634  if (( x>b->minx && x<b->maxx && len<lenbound ) ||
635  (close_from && !remove_from) || (close_to && !remove_to) ) {
636  --p;
637  for ( j=i; j<p; ++j )
638  t[j] = t[j+1];
639  --i;
640  } else {
641  rmfrom[i] = remove_from;
642  rmto[i] = remove_to;
643  }
644  }
645  }
646 
647  p_s = p;
648  if ( Spline1DCantExtremeY(s) ) {
649  /* If the control points are at the end-points then this (1D) spline is */
650  /* basically a line. But rounding errors can give us very faint extrema */
651  /* if we look for them */
652  } else if ( s->splines[1].a!=0 ) {
653  bigreal d = 4*s->splines[1].b*s->splines[1].b-4*3*s->splines[1].a*s->splines[1].c;
654  if ( d>0 ) {
655  extended t1,t2;
656  d = sqrt(d);
657  t1 = (-2*s->splines[1].b+d)/(2*3*s->splines[1].a);
658  t2 = (-2*s->splines[1].b-d)/(2*3*s->splines[1].a);
659  t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],t1,t2);
660  t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],t2,t1);
661  }
662  } else if ( s->splines[1].b!=0 )
663  t[p++] = -s->splines[1].c/(2*s->splines[1].b);
664  if ( !always ) {
665  for ( i=p_s; i<p; ++i ) {
666  real x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d;
667  real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d;
668  int close_from =( y-s->from->me.y<offsetbound && y-s->from->me.y>-offsetbound ) &&
669  ( x-s->from->me.x<offsetbound && x-s->from->me.x>-offsetbound);
670  int close_to = ( y-s->to->me.y<offsetbound && y-s->to->me.y>-offsetbound ) &&
671  ( x-s->to->me.x<offsetbound && x-s->to->me.x>-offsetbound);
672  int remove_from = close_from && GoodCurve(s->from,true) && !SpIsExtremum(s->from);
673  int remove_to = close_to && GoodCurve(s->to,false) && !SpIsExtremum(s->to);
674  if (( y>b->miny && y<b->maxy && len<lenbound ) ||
675  (close_from && !remove_from) || (close_to && !remove_to) ) {
676  --p;
677  for ( j=i; j<p; ++j )
678  t[j] = t[j+1];
679  --i;
680  } else {
681  rmfrom[i] = remove_from;
682  rmto[i] = remove_to;
683  }
684  }
685  }
686 
687  /* Throw out any t values which are not between 0 and 1 */
688  /* (we do a little fudging near the endpoints so we don't get confused */
689  /* by rounding errors) */
690  restart = false;
691  for ( i=0; i<p; ++i ) {
692  if ( t[i]>0 && t[i]<.05 ) {
693  BasePoint test;
694  /* Expand stroke gets very confused on zero-length splines so */
695  /* don't let that happen */
696  test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d - s->from->me.x;
697  test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d - s->from->me.y;
698  if (( test.x*test.x + test.y*test.y<1e-7 ) && ( test.x*test.x + test.y*test.y>0.0 )) {
699  if ( (forced = ForceEndPointExtrema(s,0))>=0 ) {
700  if ( forced && s->from->prev!=NULL )
701  SplineAddExtrema(s->from->prev,always,lenbound,offsetbound,b);
702  restart = true;
703  break;
704  }
705  }
706  }
707  if ( t[i]<1 && t[i]>.95 ) {
708  BasePoint test;
709  test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d - s->to->me.x;
710  test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d - s->to->me.y;
711  if (( test.x*test.x + test.y*test.y < 1e-7 ) && ( test.x*test.x + test.y*test.y>0.0 )) {
712  if ( ForceEndPointExtrema(s,1)>=0 ) {
713  /* don't need to fix up next, because splinesetaddextrema will do that soon */
714  restart = true;
715  break;
716  }
717  }
718  }
719 
720  if ( t[i]<=0 || t[i]>=1.0 ) {
721  --p;
722  for ( j=i; j<p; ++j ) {
723  t[j] = t[j+1];
724  rmfrom[j] = rmfrom[j+1];
725  rmto[j] = rmto[j+1];
726  }
727  --i;
728  }
729  }
730  if ( restart )
731  continue;
732 
733  if ( p==0 )
734 return(s);
735 
736  /* Find the smallest of all the interesting points */
737  min = t[0]; mini = 0;
738  for ( i=1; i<p; ++i ) {
739  if ( t[i]<min ) {
740  min=t[i];
741  mini = i;
742  }
743  }
744  sp = SplineBisect(s,min);
745 /* On the mac we get rounding errors in the bisect routine */
746  { bigreal dx, dy;
747  if ( (dx = sp->me.x - sp->prevcp.x)<0 ) dx=-dx;
748  if ( (dy = sp->me.y - sp->prevcp.y)<0 ) dy=-dy;
749  if ( dx!=0 && dy!=0 ) {
750  if ( dx<dy )
751  sp->prevcp.x = sp->me.x;
752  else
753  sp->prevcp.y = sp->me.y;
754  }
755  if ( (dx = sp->me.x - sp->nextcp.x)<0 ) dx=-dx;
756  if ( (dy = sp->me.y - sp->nextcp.y)<0 ) dy=-dy;
757  if ( dx!=0 && dy!=0 ) {
758  if ( dx<dy )
759  sp->nextcp.x = sp->me.x;
760  else
761  sp->nextcp.y = sp->me.y;
762  }
763  }
764 
765  if ( rmfrom[mini] ) sp->prev->from->ticked = true;
766  if ( rmto[mini] ) sp->next->to->ticked = true;
767  s = sp->next;
768  if ( p==1 )
769 return( s );
770  /* Don't try to use any other computed t values, it is easier to */
771  /* recompute them than to try and figure out what they map to on the */
772  /* new spline */
773  }
774 }
775 
778  time_t now;
779  SplineFont *sf;
780 
781  sf = calloc(1,sizeof(SplineFont));
782  sf->pfminfo.fstype = -1;
783  sf->pfminfo.stylemap = -1;
784  sf->top_enc = -1;
785  sf->map = NULL;
786  sf->macstyle = -1;
787  sf->desired_row_cnt = default_fv_row_count; sf->desired_col_cnt = default_fv_col_count;
788  sf->display_antialias = default_fv_antialias;
789  sf->display_bbsized = default_fv_bbsized;
790  sf->display_size = -default_fv_font_size;
791  sf->display_layer = ly_fore;
792  sf->sfntRevision = sfntRevisionUnset;
793  sf->woffMajor = woffUnset;
794  sf->woffMinor = woffUnset;
795  sf->pfminfo.winascent_add = sf->pfminfo.windescent_add = true;
796  sf->pfminfo.hheadascent_add = sf->pfminfo.hheaddescent_add = true;
797  sf->pfminfo.typoascent_add = sf->pfminfo.typodescent_add = true;
798  if ( TTFFoundry!=NULL )
799  strncpy(sf->pfminfo.os2_vendor,TTFFoundry,4);
800  else
801  memcpy(sf->pfminfo.os2_vendor,"PfEd",4);
802  sf->for_new_glyphs = DefaultNameListForNewFonts();
803  time(&now);
804  sf->creationtime = sf->modificationtime = now;
805 
806  sf->layer_cnt = 2;
807  sf->layers = calloc(2,sizeof(LayerInfo));
808  sf->layers[ly_back].name = copy(_("Back"));
809  sf->layers[ly_back].background = true;
810  sf->layers[ly_fore].name = copy(_("Fore"));
811  sf->layers[ly_fore].background = false;
812  sf->grid.background = true;
813 
814 return( sf );
815 }
816 
817 static void SFChangeXUID(SplineFont *sf, int random) {
818  char *pt, *new, *npt;
819  int val;
820 
821  if ( sf->xuid==NULL )
822 return;
823  pt = strrchr(sf->xuid,' ');
824  if ( pt==NULL )
825  pt = strchr(sf->xuid,'[');
826  if ( pt==NULL )
827  pt = sf->xuid;
828  else
829  ++pt;
830  if ( random )
831  val = rand()&0xffffff;
832  else {
833  val = strtol(pt,NULL,10);
834  val = (val+1)&0xffffff;
835  }
836 
837  new = malloc(pt-sf->xuid+12);
838  strncpy(new,sf->xuid,pt-sf->xuid);
839  npt = new + (pt-sf->xuid);
840  if ( npt==new ) *npt++ = '[';
841  sprintf(npt, "%d]", val );
842  free(sf->xuid); sf->xuid = new;
843  sf->changed = true;
844  sf->changed_since_xuidchanged = false;
845 }
846 
848  SFChangeXUID(sf,false);
849 }
850 
852  bigreal len;
853  BasePoint *bp, unit;
854  extern int snaptoint;
855 
856  if ( sp->prev==NULL )
857 return;
858  bp = &sp->prev->from->me;
859 
860  unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x;
861  len = sqrt( unit.x*unit.x + unit.y*unit.y );
862  if ( len!=0 ) {
863  unit.x /= len;
864  unit.y /= len;
865  }
866  len = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x));
867  sp->nextcp.x = sp->me.x + len*unit.x;
868  sp->nextcp.y = sp->me.y + len*unit.y;
869  if ( snaptoint ) {
870  sp->nextcp.x = rint(sp->nextcp.x);
871  sp->nextcp.y = rint(sp->nextcp.y);
872  } else {
873  sp->nextcp.x = rint(sp->nextcp.x*1024)/1024;
874  sp->nextcp.y = rint(sp->nextcp.y*1024)/1024;
875  }
876  if ( sp->next!=NULL && sp->next->order2 )
877  sp->next->to->prevcp = sp->nextcp;
878 }
879 
881  bigreal len;
882  BasePoint *bp, unit;
883  extern int snaptoint;
884 
885  if ( sp->next==NULL )
886 return;
887  bp = &sp->next->to->me;
888 
889  unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x;
890  len = sqrt( unit.x*unit.x + unit.y*unit.y );
891  if ( len!=0 ) {
892  unit.x /= len;
893  unit.y /= len;
894  }
895  len = sqrt((sp->prevcp.y-sp->me.y)*(sp->prevcp.y-sp->me.y) + (sp->prevcp.x-sp->me.x)*(sp->prevcp.x-sp->me.x));
896  sp->prevcp.x = sp->me.x + len*unit.x;
897  sp->prevcp.y = sp->me.y + len*unit.y;
898  if ( snaptoint ) {
899  sp->prevcp.x = rint(sp->prevcp.x);
900  sp->prevcp.y = rint(sp->prevcp.y);
901  } else {
902  sp->prevcp.x = rint(sp->prevcp.x*1024)/1024;
903  sp->prevcp.y = rint(sp->prevcp.y*1024)/1024;
904  }
905  if ( sp->prev!=NULL && sp->prev->order2 )
906  sp->prev->from->nextcp = sp->prevcp;
907 }
908 
910  /* Force vector to be horizontal/vertical */
911  bigreal dx, dy, len;
912 
913  if ( (dx= vector->x)<0 ) dx = -dx;
914  if ( (dy= vector->y)<0 ) dy = -dy;
915  if ( dx==0 || dy==0 )
916 return;
917  len = sqrt(dx*dx + dy*dy);
918  if ( dx>dy ) {
919  vector->x = vector->x<0 ? -len : len;
920  vector->y = 0;
921  } else {
922  vector->y = vector->y<0 ? -len : len;
923  vector->x = 0;
924  }
925 }
926 
927 #define NICE_PROPORTION .39
930  bigreal len, plen, ulen;
931  BasePoint unit;
932  extern int snaptoint;
933 
934  if ( base->next==NULL )
935 return;
936  if ( base->next->order2 ) {
937  SplineRefigureFixup(base->next);
938 return;
939  }
940  if ( !base->nextcpdef ) {
941  if ( base->pointtype==pt_tangent )
943 return;
944  }
945  next = base->next->to;
946  if ( base->prev!=NULL )
947  prev = base->prev->from;
948 
949  len = NICE_PROPORTION * sqrt((base->me.x-next->me.x)*(base->me.x-next->me.x) +
950  (base->me.y-next->me.y)*(base->me.y-next->me.y));
951  unit.x = next->me.x - base->me.x;
952  unit.y = next->me.y - base->me.y;
953  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
954  if ( ulen!=0 )
955  unit.x /= ulen, unit.y /= ulen;
956  base->nonextcp = false;
957 
958  if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) {
959  if ( prev!=NULL && (base->prevcpdef || base->noprevcp)) {
960  unit.x = next->me.x - prev->me.x;
961  unit.y = next->me.y - prev->me.y;
962  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
963  if ( ulen!=0 )
964  unit.x /= ulen, unit.y /= ulen;
965  if ( base->pointtype == pt_hvcurve )
966  BP_HVForce(&unit);
967  plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) +
968  (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y));
969  base->prevcp.x = base->me.x - plen*unit.x;
970  base->prevcp.y = base->me.y - plen*unit.y;
971  if ( snaptoint ) {
972  base->prevcp.x = rint(base->prevcp.x);
973  base->prevcp.y = rint(base->prevcp.y);
974  }
975  SplineRefigureFixup(base->prev);
976  } else if ( prev!=NULL ) {
977  /* The prev control point is fixed. So we've got to use the same */
978  /* angle it uses */
979  unit.x = base->me.x-base->prevcp.x;
980  unit.y = base->me.y-base->prevcp.y;
981  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
982  if ( ulen!=0 )
983  unit.x /= ulen, unit.y /= ulen;
984  } else {
985  base->prevcp = base->me;
986  base->noprevcp = true;
987  base->prevcpdef = true;
988  }
989  if ( base->pointtype == pt_hvcurve )
990  BP_HVForce(&unit);
991  } else if ( base->pointtype == pt_corner ) {
992  if ( next->pointtype != pt_curve && next->pointtype != pt_hvcurve ) {
993  base->nonextcp = true;
994  }
995  } else /* tangent */ {
996  if ( next->pointtype != pt_curve ) {
997  base->nonextcp = true;
998  } else {
999  if ( prev!=NULL ) {
1000  if ( !base->noprevcp ) {
1001  plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) +
1002  (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y));
1003  base->prevcp.x = base->me.x - plen*unit.x;
1004  base->prevcp.y = base->me.y - plen*unit.y;
1005  SplineRefigureFixup(base->prev);
1006  }
1007  unit.x = base->me.x-prev->me.x;
1008  unit.y = base->me.y-prev->me.y;
1009  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
1010  if ( ulen!=0 )
1011  unit.x /= ulen, unit.y /= ulen;
1012  }
1013  }
1014  }
1015  if ( base->nonextcp )
1016  base->nextcp = base->me;
1017  else {
1018  base->nextcp.x = base->me.x + len*unit.x;
1019  base->nextcp.y = base->me.y + len*unit.y;
1020  if ( snaptoint ) {
1021  base->nextcp.x = rint(base->nextcp.x);
1022  base->nextcp.y = rint(base->nextcp.y);
1023  } else {
1024  base->nextcp.x = rint(base->nextcp.x*1024)/1024;
1025  base->nextcp.y = rint(base->nextcp.y*1024)/1024;
1026  }
1027  if ( base->next != NULL )
1028  SplineRefigureFixup(base->next);
1029  }
1030 }
1031 
1034  bigreal len, nlen, ulen;
1035  BasePoint unit;
1036  extern int snaptoint;
1037 
1038  if ( base->prev==NULL )
1039 return;
1040  if ( base->prev->order2 ) {
1041  SplineRefigureFixup(base->prev);
1042 return;
1043  }
1044  if ( !base->prevcpdef ) {
1045  if ( base->pointtype==pt_tangent )
1047 return;
1048  }
1049  prev = base->prev->from;
1050  if ( base->next!=NULL )
1051  next = base->next->to;
1052 
1053  len = NICE_PROPORTION * sqrt((base->me.x-prev->me.x)*(base->me.x-prev->me.x) +
1054  (base->me.y-prev->me.y)*(base->me.y-prev->me.y));
1055  unit.x = prev->me.x - base->me.x;
1056  unit.y = prev->me.y - base->me.y;
1057  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
1058  if ( ulen!=0 )
1059  unit.x /= ulen, unit.y /= ulen;
1060  base->noprevcp = false;
1061 
1062  if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) {
1063  if ( next!=NULL && (base->nextcpdef || base->nonextcp)) {
1064  unit.x = prev->me.x - next->me.x;
1065  unit.y = prev->me.y - next->me.y;
1066  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
1067  if ( ulen!=0 )
1068  unit.x /= ulen, unit.y /= ulen;
1069  if ( base->pointtype == pt_hvcurve )
1070  BP_HVForce(&unit);
1071  nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) +
1072  (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y));
1073  base->nextcp.x = base->me.x - nlen*unit.x;
1074  base->nextcp.y = base->me.y - nlen*unit.y;
1075  if ( snaptoint ) {
1076  base->nextcp.x = rint(base->nextcp.x);
1077  base->nextcp.y = rint(base->nextcp.y);
1078  }
1079  SplineRefigureFixup(base->next);
1080  } else if ( next!=NULL ) {
1081  /* The next control point is fixed. So we got to use the same */
1082  /* angle it uses */
1083  unit.x = base->me.x-base->nextcp.x;
1084  unit.y = base->me.y-base->nextcp.y;
1085  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
1086  if ( ulen!=0 )
1087  unit.x /= ulen, unit.y /= ulen;
1088  } else {
1089  base->nextcp = base->me;
1090  base->nonextcp = true;
1091  base->nextcpdef = true;
1092  }
1093  if ( base->pointtype == pt_hvcurve )
1094  BP_HVForce(&unit);
1095  } else if ( base->pointtype == pt_corner ) {
1096  if ( prev->pointtype != pt_curve && prev->pointtype != pt_hvcurve ) {
1097  base->noprevcp = true;
1098  }
1099  } else /* tangent */ {
1100  if ( prev->pointtype != pt_curve ) {
1101  base->noprevcp = true;
1102  } else {
1103  if ( next!=NULL ) {
1104  if ( !base->nonextcp ) {
1105  nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) +
1106  (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y));
1107  base->nextcp.x = base->me.x - nlen*unit.x;
1108  base->nextcp.y = base->me.y - nlen*unit.y;
1109  SplineRefigureFixup(base->next);
1110  }
1111  unit.x = base->me.x-next->me.x;
1112  unit.y = base->me.y-next->me.y;
1113  ulen = sqrt(unit.x*unit.x + unit.y*unit.y);
1114  if ( ulen!=0 )
1115  unit.x /= ulen, unit.y /= ulen;
1116  }
1117  }
1118  }
1119  if ( base->noprevcp )
1120  base->prevcp = base->me;
1121  else {
1122  base->prevcp.x = base->me.x + len*unit.x;
1123  base->prevcp.y = base->me.y + len*unit.y;
1124  if ( snaptoint ) {
1125  base->prevcp.x = rint(base->prevcp.x);
1126  base->prevcp.y = rint(base->prevcp.y);
1127  } else {
1128  base->prevcp.x = rint(base->prevcp.x*1024)/1024;
1129  base->prevcp.y = rint(base->prevcp.y*1024)/1024;
1130  }
1131  if ( base->prev!=NULL )
1132  SplineRefigureFixup(base->prev);
1133  }
1134 }
1135 
1136 void SPTouchControl(SplinePoint *sp,BasePoint *which, int order2)
1137 {
1138  BasePoint to = *which;
1139  SPAdjustControl( sp, which, &to, order2 );
1140 }
1141 
1143  BasePoint *othercp = cp==&sp->nextcp?&sp->prevcp:&sp->nextcp;
1144  int refig = false, otherchanged = false;
1145 
1146  if ( sp->ttfindex==0xffff && order2 ) {
1147  /* If the point itself is implied, then it's the control points that */
1148  /* are fixed. Moving a CP should move the implied point so that it */
1149  /* continues to be in the right place */
1150  sp->me.x = (to->x+othercp->x)/2;
1151  sp->me.y = (to->y+othercp->y)/2;
1152  *cp = *to;
1153  refig = true;
1154  } else if ( sp->pointtype==pt_corner ) {
1155  *cp = *to;
1156  } else if ( sp->pointtype==pt_curve || sp->pointtype==pt_hvcurve ) {
1157  if ( sp->pointtype==pt_hvcurve ) {
1158  BasePoint diff;
1159  diff.x = to->x - sp->me.x;
1160  diff.y = to->y - sp->me.y;
1161  BP_HVForce(&diff);
1162  cp->x = sp->me.x + diff.x;
1163  cp->y = sp->me.y + diff.y;
1164  } else {
1165  *cp = *to;
1166  }
1167  if (( cp->x!=sp->me.x || cp->y!=sp->me.y ) &&
1168  (!order2 ||
1169  (cp==&sp->nextcp && sp->next!=NULL && sp->next->to->ttfindex==0xffff) ||
1170  (cp==&sp->prevcp && sp->prev!=NULL && sp->prev->from->ttfindex==0xffff)) ) {
1171  bigreal len1, len2;
1172  len1 = sqrt((cp->x-sp->me.x)*(cp->x-sp->me.x) +
1173  (cp->y-sp->me.y)*(cp->y-sp->me.y));
1174  len2 = sqrt((othercp->x-sp->me.x)*(othercp->x-sp->me.x) +
1175  (othercp->y-sp->me.y)*(othercp->y-sp->me.y));
1176  len2 /= len1;
1177  othercp->x = len2 * (sp->me.x-cp->x) + sp->me.x;
1178  othercp->y = len2 * (sp->me.y-cp->y) + sp->me.y;
1179  otherchanged = true;
1180  if ( sp->next!=NULL && othercp==&sp->nextcp ) {
1181  if ( order2 ) sp->next->to->prevcp = *othercp;
1182  SplineRefigure(sp->next);
1183  } else if ( sp->prev!=NULL && othercp==&sp->prevcp ) {
1184  if ( order2 ) sp->prev->from->nextcp = *othercp;
1185  SplineRefigure(sp->prev);
1186  }
1187  }
1188  if ( cp==&sp->nextcp ) sp->prevcpdef = false;
1189  else sp->nextcpdef = false;
1190  } else {
1191  BasePoint *bp;
1192  if ( cp==&sp->prevcp && sp->next!=NULL )
1193  bp = &sp->next->to->me;
1194  else if ( cp==&sp->nextcp && sp->prev!=NULL )
1195  bp = &sp->prev->from->me;
1196  else
1197  bp = NULL;
1198  if ( bp!=NULL ) {
1199  real angle = atan2(bp->y-sp->me.y,bp->x-sp->me.x);
1200  real len = sqrt((bp->x-sp->me.x)*(bp->x-sp->me.x) + (bp->y-sp->me.y)*(bp->y-sp->me.y));
1201  real dotprod =
1202  ((to->x-sp->me.x)*(bp->x-sp->me.x) +
1203  (to->y-sp->me.y)*(bp->y-sp->me.y));
1204  if ( len!=0 ) {
1205  dotprod /= len;
1206  if ( dotprod>0 ) dotprod = 0;
1207  cp->x = sp->me.x + dotprod*cos(angle);
1208  cp->y = sp->me.y + dotprod*sin(angle);
1209  }
1210  }
1211  }
1212 
1213  if ( order2 ) {
1214  if ( (cp==&sp->nextcp || otherchanged) && sp->next!=NULL ) {
1215  SplinePoint *osp = sp->next->to;
1216  if ( osp->ttfindex==0xffff ) {
1217  osp->prevcp = sp->nextcp;
1218  osp->me.x = (osp->prevcp.x+osp->nextcp.x)/2;
1219  osp->me.y = (osp->prevcp.y+osp->nextcp.y)/2;
1220  SplineRefigure(osp->next);
1221  }
1222  }
1223  if ( (cp==&sp->prevcp || otherchanged) && sp->prev!=NULL ) {
1224  SplinePoint *osp = sp->prev->from;
1225  if ( osp->ttfindex==0xffff ) {
1226  osp->nextcp = sp->prevcp;
1227  osp->me.x = (osp->prevcp.x+osp->nextcp.x)/2;
1228  osp->me.y = (osp->prevcp.y+osp->nextcp.y)/2;
1229  SplineRefigure(osp->prev);
1230  }
1231  }
1232  }
1233 
1234  if ( cp->x==sp->me.x && cp->y==sp->me.y ) {
1235  if ( cp==&sp->nextcp ) sp->nonextcp = true;
1236  else sp->noprevcp = true;
1237  } else {
1238  if ( cp==&sp->nextcp ) sp->nonextcp = false;
1239  else sp->noprevcp = false;
1240  }
1241  if ( cp==&sp->nextcp ) sp->nextcpdef = false;
1242  else sp->prevcpdef = false;
1243 
1244  if ( sp->next!=NULL && cp==&sp->nextcp ) {
1245  if ( order2 && !sp->nonextcp ) {
1246  sp->next->to->prevcp = *cp;
1247  sp->next->to->noprevcp = false;
1248  }
1249  SplineRefigureFixup(sp->next);
1250  }
1251  if ( sp->prev!=NULL && cp==&sp->prevcp ) {
1252  if ( order2 && !sp->noprevcp ) {
1253  sp->prev->from->nextcp = *cp;
1254  sp->prev->from->nonextcp = false;
1255  }
1256  SplineRefigureFixup(sp->prev);
1257  }
1258  if ( refig ) {
1259  SplineRefigure(sp->prev);
1260  SplineRefigure(sp->next);
1261  }
1262 }
1263 
1265  Spline *spline, *first, *next;
1266  BasePoint tp;
1267  SplinePoint *temp;
1268  int flag;
1269  int i;
1270  /* reverse the splineset so that what was the start point becomes the end */
1271  /* and vice versa. This entails reversing every individual spline, and */
1272  /* each point */
1273 
1274  first = NULL;
1275  spline = spl->first->next;
1276  if ( spline==NULL )
1277 return( spl ); /* Only one point, reversal is meaningless */
1278 
1279  tp = spline->from->nextcp;
1281  spline->from->prevcp = tp;
1282  flag = spline->from->nonextcp;
1284  spline->from->noprevcp = flag;
1285  flag = spline->from->nextcpdef;
1287  spline->from->prevcpdef = flag;
1288 
1289  for ( ; spline!=NULL && spline!=first; spline=next ) {
1290  next = spline->to->next;
1291 
1292  if ( spline->to!=spl->first ) { /* On a closed spline don't want to reverse the first point twice */
1293  tp = spline->to->nextcp;
1294  spline->to->nextcp = spline->to->prevcp;
1295  spline->to->prevcp = tp;
1296  flag = spline->to->nonextcp;
1298  spline->to->noprevcp = flag;
1299  flag = spline->to->nextcpdef;
1301  spline->to->prevcpdef = flag;
1302  }
1303 
1304  temp = spline->to;
1305  spline->to = spline->from;
1306  spline->from = temp;
1307  spline->from->next = spline;
1308  spline->to->prev = spline;
1310  if ( first==NULL ) first = spline;
1311  }
1312 
1313  if ( spl->first!=spl->last ) {
1314  temp = spl->first;
1315  spl->first = spl->last;
1316  spl->start_offset = 0;
1317  spl->last = temp;
1318  spl->first->prev = NULL;
1319  spl->last->next = NULL;
1320  }
1321 
1322  if ( spl->spiro_cnt>2 ) {
1323  for ( i=(spl->spiro_cnt-1)/2-1; i>=0; --i ) {
1324  spiro_cp temp_cp = spl->spiros[i];
1325  spl->spiros[i] = spl->spiros[spl->spiro_cnt-2-i];
1326  spl->spiros[spl->spiro_cnt-2-i] = temp_cp;
1327  }
1328  if ( (spl->spiros[spl->spiro_cnt-2].ty&0x7f)==SPIRO_OPEN_CONTOUR ) {
1329  spl->spiros[spl->spiro_cnt-2].ty = (spl->spiros[0].ty&0x7f) | (spl->spiros[spl->spiro_cnt-2].ty&0x80);
1330  spl->spiros[0].ty = SPIRO_OPEN_CONTOUR | (spl->spiros[0].ty&0x80);
1331  }
1332  for ( i=spl->spiro_cnt-2; i>=0; --i ) {
1333  if ( (spl->spiros[i].ty&0x7f) == SPIRO_LEFT )
1334  spl->spiros[i].ty = SPIRO_RIGHT | (spl->spiros[i].ty&0x80);
1335  else if ( (spl->spiros[i].ty&0x7f) == SPIRO_RIGHT )
1336  spl->spiros[i].ty = SPIRO_LEFT | (spl->spiros[i].ty&0x80);
1337  }
1338  }
1339 return( spl );
1340 }
1341 
1342 #include "edgelist.h"
1343 
1345  EIList el;
1346  EI *active=NULL, *apt, *pr, *e;
1347  int i, winding,change,waschange, cnt;
1348  SplineChar dummy;
1349  SplineSet *next;
1350  Layer layers[2];
1351  int cw_cnt=0, ccw_cnt=0;
1352 
1353  memset(&el,'\0',sizeof(el));
1354  memset(&dummy,'\0',sizeof(dummy));
1355  memset(layers,0,sizeof(layers));
1356  el.layer = ly_fore;
1357  dummy.layers = layers;
1358  dummy.layer_cnt = 2;
1359  dummy.layers[ly_fore].splines = (SplineSet *) spl;
1360  dummy.name = "Clockwise Test";
1361  next = spl->next; ((SplineSet *) spl)->next = NULL;
1362  ELFindEdges(&dummy,&el);
1363  if ( el.coordmax[1]-el.coordmin[1] > 1.e6 ) {
1364  LogError( _("Warning: Unreasonably big splines. They will be ignored.\n") );
1365  ((SplineSet *) spl)->next = next;
1366 return( -1 );
1367  }
1368  el.major = 1;
1369  ELOrder(&el,el.major);
1370 
1371  waschange = false;
1372  for ( i=0; i<el.cnt ; ++i ) {
1373  active = EIActiveEdgesRefigure(&el,active,i,1,&change);
1374  for ( apt=active, cnt=0; apt!=NULL; apt = apt->aenext , ++cnt );
1375  if ( el.ordered[i]!=NULL || el.ends[i] || cnt&1 ||
1376  waschange || change ||
1377  (i!=el.cnt-1 && (el.ends[i+1] || el.ordered[i+1])) ) {
1378  waschange = change;
1379  continue; /* Just too hard to get the edges sorted when we are at a start vertex */
1380  }
1381  waschange = change;
1382  for ( apt=active; apt!=NULL; apt = e) {
1383  if ( EISkipExtremum(apt,i+el.low,1)) {
1384  e = apt->aenext->aenext;
1385  continue;
1386  }
1387  if ( apt->up )
1388  ++cw_cnt;
1389  else
1390  ++ccw_cnt;
1391  if ( cw_cnt!=0 && ccw_cnt!=0 ) {
1392  ((SplineSet *) spl)->next = next;
1393 return( -1 );
1394  }
1395  winding = apt->up?1:-1;
1396  for ( pr=apt, e=apt->aenext; e!=NULL && winding!=0; pr=e, e=e->aenext ) {
1397  if ( EISkipExtremum(e,i+el.low,1)) {
1398  e = e->aenext;
1399  continue;
1400  }
1401  if ( pr->up!=e->up ) {
1402  if ( (winding<=0 && !e->up) || (winding>0 && e->up )) {
1403 /* return( -1 );*/ /* This is an erroneous condition... but I don't think*/
1404  /* it can actually happen with a single contour. I */
1405  /* think it is more likely this means a rounding error*/
1406  /* and a problem in my algorithm */
1407  fprintf( stderr, "SplinePointListIsClockwise: Found error\n" );
1408  }
1409  winding += (e->up?1:-1);
1410  } else if ( EISameLine(pr,e,i+el.low,1) )
1411  /* This just continues the line and doesn't change count */;
1412  else {
1413  if ( (winding<=0 && !e->up) || (winding>0 && e->up )) {
1414  fprintf( stderr, "SplinePointListIsClockwise: Found error\n" );
1415 /*return( -1 );*/
1416  }
1417  winding += (e->up?1:-1);
1418  }
1419  }
1420  }
1421  }
1422  free(el.ordered);
1423  free(el.ends);
1424  ElFreeEI(&el);
1425  ((SplineSet *) spl)->next = next;
1426 
1427  if ( cw_cnt!=0 )
1428 return( true );
1429  else if ( ccw_cnt!=0 )
1430 return( false );
1431 
1432 return( -1 );
1433 }
1434 
1435 /* Since this function now deals with 4 arbitrarily selected points, */
1436 /* it has to try to combine them by different ways in order to see */
1437 /* if they actually can specify a diagonal stem. The reordered points */
1438 /* are placed back to array passed to the function.*/
1440  BasePoint *line1[2], *line2[2], *temp, *base;
1441  BasePoint unit1, unit2;
1442  int i, j, k;
1443  bigreal dist_error_diag, len1, len2, width, dot;
1444  bigreal off1, off2;
1445 
1446  for ( i=0; i<4; i++ ) {
1447  if ( bp[i] == NULL )
1448 return( false );
1449  }
1450 
1451  dist_error_diag = 0.0065 * ( sf->ascent + sf->descent );
1452  /* Assume that the first point passed to the function is the starting */
1453  /* point of the first of two vectors. Then try all possible combinations */
1454  /* (there are 3), ensure the vectors are consistantly ordered, and */
1455  /* check if they are parallel.*/
1456  base = bp[0];
1457  for ( i=1; i<4; i++ ) {
1458  line1[0] = base; line1[1] = bp[i];
1459 
1460  k=0;
1461  for ( j=1; j<4; j++ ) {
1462  if ( j != i )
1463  line2[k++] = bp[j];
1464  }
1465  unit1.x = line1[1]->x - line1[0]->x;
1466  unit1.y = line1[1]->y - line1[0]->y;
1467  unit2.x = line2[1]->x - line2[0]->x;
1468  unit2.y = line2[1]->y - line2[0]->y;
1469  /* No horizontal, vertical edges */
1470  if ( unit1.x == 0 || unit1.y == 0 || unit2.x == 0 || unit2.y == 0 )
1471  continue;
1472  len1 = sqrt( pow( unit1.x,2 ) + pow( unit1.y,2 ));
1473  len2 = sqrt( pow( unit2.x,2 ) + pow( unit2.y,2 ));
1474  unit1.x /= len1; unit1.y /= len1;
1475  unit2.x /= len2; unit2.y /= len2;
1476  dot = unit1.x * unit2.y - unit1.y * unit2.x;
1477  /* Units parallel */
1478  if ( dot <= -.05 || dot >= .05 )
1479  continue;
1480  /* Ensure vectors point by such a way that the angle is between 90 and 270 degrees */
1481  if ( unit1.x < 0 ) {
1482  temp = line1[0]; line1[0] = line1[1]; line1[1] = temp;
1483  unit1.x = -unit1.x; unit1.y = -unit1.y;
1484  }
1485  if ( unit2.x < 0 ) {
1486  temp = line2[0]; line2[0] = line2[1]; line2[1] = temp;
1487  unit2.x = -unit2.x; unit2.y = -unit2.y;
1488  }
1489  off1 = ( line1[1]->x - line1[0]->x ) * unit2.y -
1490  ( line1[1]->y - line1[0]->y ) * unit2.x;
1491  off2 = ( line2[1]->x - line2[0]->x ) * unit1.y -
1492  ( line2[1]->y - line2[0]->y ) * unit1.x;
1493  if ( len1 > len2 && fabs( off2 ) < 2*dist_error_diag ) *unit = unit1;
1494  else if ( fabs( off1 ) < 2*dist_error_diag ) *unit = unit2;
1495  else
1496  continue;
1497  width = ( line2[0]->x - line1[0]->x ) * unit->y -
1498  ( line2[0]->y - line1[0]->y ) * unit->x;
1499  /* Make sure this is a real line, rather than just two */
1500  /* short spline segments which occasionally have happened to be */
1501  /* parallel. This is necessary to correctly handle things which may */
1502  /* be "diagonalable" in 2 different directions (like slash in some */
1503  /* designs). */
1504  if ( fabs( width ) > len1 || fabs( width ) > len2 )
1505  continue;
1506  /* Make sure line2 is further right than line1 */
1507  if ( width < 0 ) {
1508  temp = line1[0]; line1[0] = line2[0]; line2[0] = temp;
1509  temp = line1[1]; line1[1] = line2[1]; line2[1] = temp;
1510  }
1511  bp[0] = line1[0];
1512  bp[1] = line2[0];
1513  bp[2] = line1[1];
1514  bp[3] = line2[1];
1515 return( true );
1516  }
1517 return( false );
1518 }
double __cdecl atan2(double _Y, double _X)
double __cdecl rint(double _X)
long __cdecl strtol(char const *_String, char **_EndPtr, int _Radix)
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
double __cdecl pow(double _X, double _Y)
static int pr(int(*writeFunc)(void *stream, const char *data, int size), void *stream, const char *data)
Definition: HTMLGen.cc:249
bp
Definition: action.c:1035
cp
Definition: action.c:1035
#define active
Definition: aptex-macros.h:325
#define width(a)
Definition: aptex-macros.h:198
#define next(a)
Definition: aptex-macros.h:924
off1
Definition: bmpfont.h:210
off2
Definition: bmpfont.h:210
#define b
Definition: jpegint.h:372
#define free(a)
Definition: decNumber.cpp:310
#define strrchr
Definition: detex.c:67
#define dummy
Definition: devnag.c:313
int dummy
Definition: dummy.c:29
int w
Definition: dviconv.c:26
double real
Definition: dvips.h:66
double cos()
double sin()
double sqrt()
char * strncpy()
char * temp
Definition: dvidvi.c:137
long int flag
Definition: f2c.h:53
char * TTFFoundry
Definition: tottf.c:40
#define _(String)
Definition: ftxerr18.c:64
static void copy(GlyphCachePtr *root)
Definition: gcache.c:378
#define tp
#define v1
#define v2
#define s
Definition: afcover.h:80
#define t
Definition: afcover.h:96
static FIELD_PTR prev
Definition: genind.c:36
#define dot
Definition: globals.h:56
#define a(n)
Definition: gpos-common.c:148
#define d(n)
Definition: gpos-common.c:151
int base
Definition: gsftopk.c:1502
#define strchr
Definition: gsftopk.c:59
#define memcpy(d, s, n)
Definition: gsftopk.c:64
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p
Definition: afcover.h:72
small capitals from c petite p scientific i
Definition: afcover.h:80
kerning y
Definition: ttdriver.c:212
voidp calloc()
#define rand()
Definition: mem.h:49
static int ret
Definition: convert.c:72
#define fprintf
Definition: mendex.h:64
#define fabs(x)
Definition: cpascal.h:211
#define malloc
Definition: alloca.c:91
#define test
Definition: tie.c:129
long time_t
Definition: types.h:18
#define sprintf
Definition: snprintf.c:44
unsigned char uint8
Definition: tiff.h:60
int unit
Definition: tfmread.c:8
angle
Definition: cordic.py:17
float x
Definition: cordic.py:15
int k
Definition: otp-parser.c:70
#define min(a, b)
Definition: pbmplus.h:223
#define t4
#define t1
#define t3
#define t2
static int cnt
Definition: pkout.c:166
real to[600]
Definition: pmxab.c:87
static int32_t first
Definition: ppagelist.c:29
static int cury
Definition: ppmtogif.c:300
static int curx
Definition: ppmtogif.c:300
bstring c int memset(void *s, int c, int length)
time_t time()
#define SPIRO_OPEN_CONTOUR
Definition: PfEd.h:208
#define SPIRO_LEFT
Definition: PfEd.h:212
#define SPIRO_RIGHT
Definition: PfEd.h:213
void ElFreeEI(EIList *el)
Definition: autohint.c:595
int EISkipExtremum(EI *e, float i, int major)
Definition: autohint.c:1021
EI * EIActiveEdgesRefigure(EIList *el, EI *active, float i, int major, int *_change)
Definition: autohint.c:925
void ELFindEdges(SplineChar *sc, EIList *el)
Definition: autohint.c:723
int EISameLine(EI *e, EI *n, float i, int major)
Definition: autohint.c:987
void ELOrder(EIList *el, int major)
Definition: autohint.c:774
NameList * DefaultNameListForNewFonts(void)
Definition: namelist.c:151
double CheckExtremaForSingleBitErrors(const Spline1D *sp, double t, double othert)
Definition: splineutil.c:1630
#define sfntRevisionUnset
Definition: splinefont.h:1821
SplinePoint * SplineBisect(Spline *spline, double t)
Definition: splineutil.c:3485
@ ly_back
Definition: splinefont.h:1209
@ ly_fore
Definition: splinefont.h:1209
#define extended
Definition: splinefont.h:52
@ pt_hvcurve
Definition: splinefont.h:951
@ pt_curve
Definition: splinefont.h:951
@ pt_tangent
Definition: splinefont.h:951
@ pt_corner
Definition: splinefont.h:951
void SplineRefigureFixup(Spline *spline)
#define bigreal
Definition: splinefont.h:49
void SplineFindExtrema(const Spline1D *sp, double *_t1, double *_t2)
Definition: splineutil.c:1668
void SplineRefigure(Spline *spline)
#define woffUnset
Definition: splinefont.h:1823
SplineFont * SplineFontEmpty(void)
Definition: splineutil2.c:776
int SPInterpolate(const SplinePoint *sp)
Definition: splineutil2.c:399
void SplineCharDefaultNextCP(SplinePoint *base)
Definition: splineutil2.c:928
int Within16RoundingErrors(double v1, double v2)
Definition: splineutil2.c:82
int new_fonts_are_order2
Definition: splineutil2.c:33
int RealWithin(float a, float b, float fudge)
Definition: splineutil2.c:159
int snaptoint
Definition: splineutil2.c:40
int RealNear(float a, float b)
Definition: splineutil2.c:112
static int MinMaxWithin(Spline *spline)
Definition: splineutil2.c:164
int SplineIsLinear(Spline *spline)
Definition: splineutil2.c:199
int RealApprox(float a, float b)
Definition: splineutil2.c:143
int RealNearish(float a, float b)
Definition: splineutil2.c:137
void SPAdjustControl(SplinePoint *sp, BasePoint *cp, BasePoint *to, int order2)
Definition: splineutil2.c:1142
int default_fv_antialias
Definition: splineutil2.c:38
int Within4RoundingErrors(double v1, double v2)
Definition: splineutil2.c:52
static void SFChangeXUID(SplineFont *sf, int random)
Definition: splineutil2.c:817
Spline * SplineAddExtrema(Spline *s, int always, float lenbound, float offsetbound, DBounds *b)
Definition: splineutil2.c:573
int default_fv_row_count
Definition: splineutil2.c:35
void SplineCharDefaultPrevCP(SplinePoint *base)
Definition: splineutil2.c:1032
void BP_HVForce(BasePoint *vector)
Definition: splineutil2.c:909
#define RE_Factor
Definition: splineutil2.c:49
int default_fv_bbsized
Definition: splineutil2.c:39
int SplinePointListIsClockwise(const SplineSet *spl)
Definition: splineutil2.c:1344
int Spline1DCantExtremeY(const Spline *s)
Definition: splineutil2.c:555
int default_fv_font_size
Definition: splineutil2.c:37
static int ForceEndPointExtrema(Spline *s, int isto)
Definition: splineutil2.c:457
int Spline1DCantExtremeX(const Spline *s)
Definition: splineutil2.c:537
void SplineCharTangentNextCP(SplinePoint *sp)
Definition: splineutil2.c:851
double SplineLength(Spline *spline)
Definition: splineutil2.c:383
void SFIncrementXUID(SplineFont *sf)
Definition: splineutil2.c:847
void SplineCharTangentPrevCP(SplinePoint *sp)
Definition: splineutil2.c:880
int default_fv_col_count
Definition: splineutil2.c:36
#define RE_NearZero
Definition: splineutil2.c:48
int loaded_fonts_same_as_new
Definition: splineutil2.c:34
SplineSet * SplineSetReverse(SplineSet *spl)
Definition: splineutil2.c:1264
#define NICE_PROPORTION
Definition: splineutil2.c:927
void SPTouchControl(SplinePoint *sp, BasePoint *which, int order2)
Definition: splineutil2.c:1136
int new_em_size
Definition: splineutil2.c:32
int SpIsExtremum(SplinePoint *sp)
Definition: splineutil2.c:407
int PointsDiagonalable(SplineFont *sf, BasePoint **bp, BasePoint *unit)
Definition: splineutil2.c:1439
static int GoodCurve(SplinePoint *sp, int check_prev)
Definition: splineutil2.c:302
static double dist_error_diag
Definition: stemdb.c:48
#define LogError
Definition: uiinterface.h:125
test
Definition: parser.c:257
#define flag
Definition: round_prec.c:45
ShellFileEnvironment e
Definition: sh6.c:388
float x
Definition: splinefont.h:70
float y
Definition: splinefont.h:71
char * ends
Definition: edgelist.h:124
int major
Definition: edgelist.h:127
float coordmax[2]
Definition: edgelist.h:121
float coordmin[2]
Definition: edgelist.h:120
int layer
Definition: edgelist.h:126
int low
Definition: edgelist.h:122
EI ** ordered
Definition: edgelist.h:123
int cnt
Definition: edgelist.h:122
SplinePointList * splines
Definition: splinefont.h:1201
Definition: tfmaux.c:31
float a
Definition: splinefont.h:1010
float d
Definition: splinefont.h:1010
float b
Definition: splinefont.h:1010
float c
Definition: splinefont.h:1010
unsigned int knowncurved
Definition: splinefont.h:1029
Spline1D splines[2]
Definition: splinefont.h:1039
SplinePoint * to
Definition: splinefont.h:1038
unsigned int knownlinear
Definition: splinefont.h:1030
SplinePoint * from
Definition: splinefont.h:1037
BasePoint me
Definition: splinefont.h:953
unsigned int noprevcp
Definition: splinefont.h:957
struct spline * next
Definition: splinefont.h:979
uint16 ttfindex
Definition: splinefont.h:974
struct spline * prev
Definition: splinefont.h:980
unsigned int nonextcp
Definition: splinefont.h:956
BasePoint nextcp
Definition: splinefont.h:954
unsigned int prevcpdef
Definition: splinefont.h:959
BasePoint prevcp
Definition: splinefont.h:955
unsigned int nextcpdef
Definition: splinefont.h:958
struct splinepointlist * next
Definition: splinefont.h:1073
spiro_cp * spiros
Definition: splinefont.h:1074
SplinePoint * last
Definition: splinefont.h:1072
SplinePoint * first
Definition: splinefont.h:1072
Definition: dvips.h:235
Definition: fio.h:71
Definition: strexpr.c:21
Definition: sed.h:50
int j
Definition: t4ht.c:1589
up
Definition: tex4ht.c:2558
val
Definition: tex4ht.c:3227
int diff
Definition: tex4ht.c:3815
char line2[BUFSIZ]
Definition: texfix.c:35
#define sp
Definition: stack.c:11
PATTERN * pt
Definition: vlna.c:74
#define end(cp)
Definition: zic.c:71