• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8
9        <meta name="description" content="API Reference Documentation for FreeType-2.12.1">
10
11
12
13        <meta name="author" content="FreeType Contributors">
14
15
16      <link rel="icon" href="images/favico.ico">
17      <meta name="generator" content="mkdocs-1.2.1, mkdocs-material-7.1.9">
18
19
20
21        <title>Computations - FreeType-2.12.1 API Reference</title>
22
23
24
25      <link rel="stylesheet" href="assets/stylesheets/main.ca7ac06f.min.css">
26
27
28        <link rel="stylesheet" href="assets/stylesheets/palette.f1a3b89f.min.css">
29
30
31
32          <meta name="theme-color" content="#4cae4f">
33
34
35
36
37
38
39
40        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
41        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
42        <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style>
43
44
45
46
47      <link rel="stylesheet" href="stylesheets/extra.css">
48
49
50
51
52
53
54
55  </head>
56
57
58
59
60
61
62
63    <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green">
64
65
66    <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
67
68    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
69    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
70    <label class="md-overlay" for="__drawer"></label>
71    <div data-md-component="skip">
72
73
74        <a href="#computations" class="md-skip">
75          Skip to content
76        </a>
77
78    </div>
79    <div data-md-component="announce">
80
81    </div>
82
83      <header class="md-header" data-md-component="header">
84  <nav class="md-header__inner md-grid" aria-label="Header">
85    <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo">
86
87  <img src="images/favico.ico" alt="logo">
88
89    </a>
90    <label class="md-header__button md-icon" for="__drawer">
91      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
92    </label>
93    <div class="md-header__title" data-md-component="header-title">
94      <div class="md-header__ellipsis">
95        <div class="md-header__topic">
96          <span class="md-ellipsis">
97            FreeType-2.12.1 API Reference
98          </span>
99        </div>
100        <div class="md-header__topic" data-md-component="header-topic">
101          <span class="md-ellipsis">
102
103              Computations
104
105          </span>
106        </div>
107      </div>
108    </div>
109
110
111
112      <label class="md-header__button md-icon" for="__search">
113        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
114      </label>
115
116<div class="md-search" data-md-component="search" role="dialog">
117  <label class="md-search__overlay" for="__search"></label>
118  <div class="md-search__inner" role="search">
119    <form class="md-search__form" name="search">
120      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
121      <label class="md-search__icon md-icon" for="__search">
122        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
123        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
124      </label>
125      <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
126        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
127      </button>
128    </form>
129    <div class="md-search__output">
130      <div class="md-search__scrollwrap" data-md-scrollfix>
131        <div class="md-search-result" data-md-component="search-result">
132          <div class="md-search-result__meta">
133            Initializing search
134          </div>
135          <ol class="md-search-result__list"></ol>
136        </div>
137      </div>
138    </div>
139  </div>
140</div>
141
142
143  </nav>
144</header>
145
146    <div class="md-container" data-md-component="container">
147
148
149
150
151      <main class="md-main" data-md-component="main">
152        <div class="md-main__inner md-grid">
153
154
155
156              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
157                <div class="md-sidebar__scrollwrap">
158                  <div class="md-sidebar__inner">
159
160
161
162<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
163  <label class="md-nav__title" for="__drawer">
164    <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo">
165
166  <img src="images/favico.ico" alt="logo">
167
168    </a>
169    FreeType-2.12.1 API Reference
170  </label>
171
172  <ul class="md-nav__list" data-md-scrollfix>
173
174
175
176
177
178
179
180
181    <li class="md-nav__item">
182      <a href="index.html" class="md-nav__link">
183        TOC
184      </a>
185    </li>
186
187
188
189
190
191
192
193
194
195
196    <li class="md-nav__item">
197      <a href="ft2-index.html" class="md-nav__link">
198        Index
199      </a>
200    </li>
201
202
203
204
205
206
207
208
209
210
211
212    <li class="md-nav__item md-nav__item--nested">
213
214
215        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
216
217      <label class="md-nav__link" for="__nav_3">
218        General Remarks
219        <span class="md-nav__icon md-icon"></span>
220      </label>
221      <nav class="md-nav" aria-label="General Remarks" data-md-level="1">
222        <label class="md-nav__title" for="__nav_3">
223          <span class="md-nav__icon md-icon"></span>
224          General Remarks
225        </label>
226        <ul class="md-nav__list" data-md-scrollfix>
227
228
229
230
231
232    <li class="md-nav__item">
233      <a href="ft2-preamble.html" class="md-nav__link">
234        Preamble
235      </a>
236    </li>
237
238
239
240
241
242
243
244    <li class="md-nav__item">
245      <a href="ft2-header_inclusion.html" class="md-nav__link">
246        FreeType's header inclusion scheme
247      </a>
248    </li>
249
250
251
252
253
254
255
256    <li class="md-nav__item">
257      <a href="ft2-user_allocation.html" class="md-nav__link">
258        User allocation
259      </a>
260    </li>
261
262
263
264        </ul>
265      </nav>
266    </li>
267
268
269
270
271
272
273
274
275
276
277
278    <li class="md-nav__item md-nav__item--nested">
279
280
281        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
282
283      <label class="md-nav__link" for="__nav_4">
284        Core API
285        <span class="md-nav__icon md-icon"></span>
286      </label>
287      <nav class="md-nav" aria-label="Core API" data-md-level="1">
288        <label class="md-nav__title" for="__nav_4">
289          <span class="md-nav__icon md-icon"></span>
290          Core API
291        </label>
292        <ul class="md-nav__list" data-md-scrollfix>
293
294
295
296
297
298    <li class="md-nav__item">
299      <a href="ft2-version.html" class="md-nav__link">
300        FreeType Version
301      </a>
302    </li>
303
304
305
306
307
308
309
310    <li class="md-nav__item">
311      <a href="ft2-basic_types.html" class="md-nav__link">
312        Basic Data Types
313      </a>
314    </li>
315
316
317
318
319
320
321
322    <li class="md-nav__item">
323      <a href="ft2-base_interface.html" class="md-nav__link">
324        Base Interface
325      </a>
326    </li>
327
328
329
330
331
332
333
334    <li class="md-nav__item">
335      <a href="ft2-glyph_variants.html" class="md-nav__link">
336        Unicode Variation Sequences
337      </a>
338    </li>
339
340
341
342
343
344
345
346    <li class="md-nav__item">
347      <a href="ft2-color_management.html" class="md-nav__link">
348        Glyph Color Management
349      </a>
350    </li>
351
352
353
354
355
356
357
358    <li class="md-nav__item">
359      <a href="ft2-layer_management.html" class="md-nav__link">
360        Glyph Layer Management
361      </a>
362    </li>
363
364
365
366
367
368
369
370    <li class="md-nav__item">
371      <a href="ft2-glyph_management.html" class="md-nav__link">
372        Glyph Management
373      </a>
374    </li>
375
376
377
378
379
380
381
382    <li class="md-nav__item">
383      <a href="ft2-mac_specific.html" class="md-nav__link">
384        Mac Specific Interface
385      </a>
386    </li>
387
388
389
390
391
392
393
394    <li class="md-nav__item">
395      <a href="ft2-sizes_management.html" class="md-nav__link">
396        Size Management
397      </a>
398    </li>
399
400
401
402
403
404
405
406    <li class="md-nav__item">
407      <a href="ft2-header_file_macros.html" class="md-nav__link">
408        Header File Macros
409      </a>
410    </li>
411
412
413
414        </ul>
415      </nav>
416    </li>
417
418
419
420
421
422
423
424
425
426
427
428    <li class="md-nav__item md-nav__item--nested">
429
430
431        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
432
433      <label class="md-nav__link" for="__nav_5">
434        Format-Specific API
435        <span class="md-nav__icon md-icon"></span>
436      </label>
437      <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
438        <label class="md-nav__title" for="__nav_5">
439          <span class="md-nav__icon md-icon"></span>
440          Format-Specific API
441        </label>
442        <ul class="md-nav__list" data-md-scrollfix>
443
444
445
446
447
448    <li class="md-nav__item">
449      <a href="ft2-multiple_masters.html" class="md-nav__link">
450        Multiple Masters
451      </a>
452    </li>
453
454
455
456
457
458
459
460    <li class="md-nav__item">
461      <a href="ft2-truetype_tables.html" class="md-nav__link">
462        TrueType Tables
463      </a>
464    </li>
465
466
467
468
469
470
471
472    <li class="md-nav__item">
473      <a href="ft2-type1_tables.html" class="md-nav__link">
474        Type 1 Tables
475      </a>
476    </li>
477
478
479
480
481
482
483
484    <li class="md-nav__item">
485      <a href="ft2-sfnt_names.html" class="md-nav__link">
486        SFNT Names
487      </a>
488    </li>
489
490
491
492
493
494
495
496    <li class="md-nav__item">
497      <a href="ft2-bdf_fonts.html" class="md-nav__link">
498        BDF and PCF Files
499      </a>
500    </li>
501
502
503
504
505
506
507
508    <li class="md-nav__item">
509      <a href="ft2-cid_fonts.html" class="md-nav__link">
510        CID Fonts
511      </a>
512    </li>
513
514
515
516
517
518
519
520    <li class="md-nav__item">
521      <a href="ft2-pfr_fonts.html" class="md-nav__link">
522        PFR Fonts
523      </a>
524    </li>
525
526
527
528
529
530
531
532    <li class="md-nav__item">
533      <a href="ft2-winfnt_fonts.html" class="md-nav__link">
534        Window FNT Files
535      </a>
536    </li>
537
538
539
540
541
542
543
544    <li class="md-nav__item">
545      <a href="ft2-svg_fonts.html" class="md-nav__link">
546        OpenType SVG Fonts
547      </a>
548    </li>
549
550
551
552
553
554
555
556    <li class="md-nav__item">
557      <a href="ft2-font_formats.html" class="md-nav__link">
558        Font Formats
559      </a>
560    </li>
561
562
563
564
565
566
567
568    <li class="md-nav__item">
569      <a href="ft2-gasp_table.html" class="md-nav__link">
570        Gasp Table
571      </a>
572    </li>
573
574
575
576        </ul>
577      </nav>
578    </li>
579
580
581
582
583
584
585
586
587
588
589
590    <li class="md-nav__item md-nav__item--nested">
591
592
593        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
594
595      <label class="md-nav__link" for="__nav_6">
596        Controlling FreeType Modules
597        <span class="md-nav__icon md-icon"></span>
598      </label>
599      <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
600        <label class="md-nav__title" for="__nav_6">
601          <span class="md-nav__icon md-icon"></span>
602          Controlling FreeType Modules
603        </label>
604        <ul class="md-nav__list" data-md-scrollfix>
605
606
607
608
609
610    <li class="md-nav__item">
611      <a href="ft2-auto_hinter.html" class="md-nav__link">
612        The auto-hinter
613      </a>
614    </li>
615
616
617
618
619
620
621
622    <li class="md-nav__item">
623      <a href="ft2-cff_driver.html" class="md-nav__link">
624        The CFF driver
625      </a>
626    </li>
627
628
629
630
631
632
633
634    <li class="md-nav__item">
635      <a href="ft2-t1_cid_driver.html" class="md-nav__link">
636        The Type 1 and CID drivers
637      </a>
638    </li>
639
640
641
642
643
644
645
646    <li class="md-nav__item">
647      <a href="ft2-tt_driver.html" class="md-nav__link">
648        The TrueType driver
649      </a>
650    </li>
651
652
653
654
655
656
657
658    <li class="md-nav__item">
659      <a href="ft2-pcf_driver.html" class="md-nav__link">
660        The PCF driver
661      </a>
662    </li>
663
664
665
666
667
668
669
670    <li class="md-nav__item">
671      <a href="ft2-ot_svg_driver.html" class="md-nav__link">
672        The SVG driver
673      </a>
674    </li>
675
676
677
678
679
680
681
682    <li class="md-nav__item">
683      <a href="ft2-properties.html" class="md-nav__link">
684        Driver properties
685      </a>
686    </li>
687
688
689
690
691
692
693
694    <li class="md-nav__item">
695      <a href="ft2-parameter_tags.html" class="md-nav__link">
696        Parameter Tags
697      </a>
698    </li>
699
700
701
702
703
704
705
706    <li class="md-nav__item">
707      <a href="ft2-lcd_rendering.html" class="md-nav__link">
708        Subpixel Rendering
709      </a>
710    </li>
711
712
713
714        </ul>
715      </nav>
716    </li>
717
718
719
720
721
722
723
724
725
726
727
728    <li class="md-nav__item md-nav__item--nested">
729
730
731        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
732
733      <label class="md-nav__link" for="__nav_7">
734        Cache Sub-System
735        <span class="md-nav__icon md-icon"></span>
736      </label>
737      <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
738        <label class="md-nav__title" for="__nav_7">
739          <span class="md-nav__icon md-icon"></span>
740          Cache Sub-System
741        </label>
742        <ul class="md-nav__list" data-md-scrollfix>
743
744
745
746
747
748    <li class="md-nav__item">
749      <a href="ft2-cache_subsystem.html" class="md-nav__link">
750        Cache Sub-System
751      </a>
752    </li>
753
754
755
756        </ul>
757      </nav>
758    </li>
759
760
761
762
763
764
765
766
767
768
769
770
771
772    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
773
774
775        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" checked>
776
777      <label class="md-nav__link" for="__nav_8">
778        Support API
779        <span class="md-nav__icon md-icon"></span>
780      </label>
781      <nav class="md-nav" aria-label="Support API" data-md-level="1">
782        <label class="md-nav__title" for="__nav_8">
783          <span class="md-nav__icon md-icon"></span>
784          Support API
785        </label>
786        <ul class="md-nav__list" data-md-scrollfix>
787
788
789
790
791
792
793
794    <li class="md-nav__item md-nav__item--active">
795
796      <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
797
798
799
800
801
802        <label class="md-nav__link md-nav__link--active" for="__toc">
803          Computations
804          <span class="md-nav__icon md-icon"></span>
805        </label>
806
807      <a href="ft2-computations.html" class="md-nav__link md-nav__link--active">
808        Computations
809      </a>
810
811
812<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
813
814
815
816
817
818
819    <label class="md-nav__title" for="__toc">
820      <span class="md-nav__icon md-icon"></span>
821      Table of contents
822    </label>
823    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
824
825        <li class="md-nav__item">
826  <a href="#synopsis" class="md-nav__link">
827    Synopsis
828  </a>
829
830</li>
831
832        <li class="md-nav__item">
833  <a href="#ft_muldiv" class="md-nav__link">
834    FT_MulDiv
835  </a>
836
837</li>
838
839        <li class="md-nav__item">
840  <a href="#ft_mulfix" class="md-nav__link">
841    FT_MulFix
842  </a>
843
844</li>
845
846        <li class="md-nav__item">
847  <a href="#ft_divfix" class="md-nav__link">
848    FT_DivFix
849  </a>
850
851</li>
852
853        <li class="md-nav__item">
854  <a href="#ft_roundfix" class="md-nav__link">
855    FT_RoundFix
856  </a>
857
858</li>
859
860        <li class="md-nav__item">
861  <a href="#ft_ceilfix" class="md-nav__link">
862    FT_CeilFix
863  </a>
864
865</li>
866
867        <li class="md-nav__item">
868  <a href="#ft_floorfix" class="md-nav__link">
869    FT_FloorFix
870  </a>
871
872</li>
873
874        <li class="md-nav__item">
875  <a href="#ft_vector_transform" class="md-nav__link">
876    FT_Vector_Transform
877  </a>
878
879</li>
880
881        <li class="md-nav__item">
882  <a href="#ft_matrix_multiply" class="md-nav__link">
883    FT_Matrix_Multiply
884  </a>
885
886</li>
887
888        <li class="md-nav__item">
889  <a href="#ft_matrix_invert" class="md-nav__link">
890    FT_Matrix_Invert
891  </a>
892
893</li>
894
895        <li class="md-nav__item">
896  <a href="#ft_angle" class="md-nav__link">
897    FT_Angle
898  </a>
899
900</li>
901
902        <li class="md-nav__item">
903  <a href="#ft_angle_pi" class="md-nav__link">
904    FT_ANGLE_PI
905  </a>
906
907</li>
908
909        <li class="md-nav__item">
910  <a href="#ft_angle_2pi" class="md-nav__link">
911    FT_ANGLE_2PI
912  </a>
913
914</li>
915
916        <li class="md-nav__item">
917  <a href="#ft_angle_pi2" class="md-nav__link">
918    FT_ANGLE_PI2
919  </a>
920
921</li>
922
923        <li class="md-nav__item">
924  <a href="#ft_angle_pi4" class="md-nav__link">
925    FT_ANGLE_PI4
926  </a>
927
928</li>
929
930        <li class="md-nav__item">
931  <a href="#ft_sin" class="md-nav__link">
932    FT_Sin
933  </a>
934
935</li>
936
937        <li class="md-nav__item">
938  <a href="#ft_cos" class="md-nav__link">
939    FT_Cos
940  </a>
941
942</li>
943
944        <li class="md-nav__item">
945  <a href="#ft_tan" class="md-nav__link">
946    FT_Tan
947  </a>
948
949</li>
950
951        <li class="md-nav__item">
952  <a href="#ft_atan2" class="md-nav__link">
953    FT_Atan2
954  </a>
955
956</li>
957
958        <li class="md-nav__item">
959  <a href="#ft_angle_diff" class="md-nav__link">
960    FT_Angle_Diff
961  </a>
962
963</li>
964
965        <li class="md-nav__item">
966  <a href="#ft_vector_unit" class="md-nav__link">
967    FT_Vector_Unit
968  </a>
969
970</li>
971
972        <li class="md-nav__item">
973  <a href="#ft_vector_rotate" class="md-nav__link">
974    FT_Vector_Rotate
975  </a>
976
977</li>
978
979        <li class="md-nav__item">
980  <a href="#ft_vector_length" class="md-nav__link">
981    FT_Vector_Length
982  </a>
983
984</li>
985
986        <li class="md-nav__item">
987  <a href="#ft_vector_polarize" class="md-nav__link">
988    FT_Vector_Polarize
989  </a>
990
991</li>
992
993        <li class="md-nav__item">
994  <a href="#ft_vector_from_polar" class="md-nav__link">
995    FT_Vector_From_Polar
996  </a>
997
998</li>
999
1000    </ul>
1001
1002</nav>
1003
1004    </li>
1005
1006
1007
1008
1009
1010
1011
1012    <li class="md-nav__item">
1013      <a href="ft2-list_processing.html" class="md-nav__link">
1014        List Processing
1015      </a>
1016    </li>
1017
1018
1019
1020
1021
1022
1023
1024    <li class="md-nav__item">
1025      <a href="ft2-outline_processing.html" class="md-nav__link">
1026        Outline Processing
1027      </a>
1028    </li>
1029
1030
1031
1032
1033
1034
1035
1036    <li class="md-nav__item">
1037      <a href="ft2-quick_advance.html" class="md-nav__link">
1038        Quick retrieval of advance values
1039      </a>
1040    </li>
1041
1042
1043
1044
1045
1046
1047
1048    <li class="md-nav__item">
1049      <a href="ft2-bitmap_handling.html" class="md-nav__link">
1050        Bitmap Handling
1051      </a>
1052    </li>
1053
1054
1055
1056
1057
1058
1059
1060    <li class="md-nav__item">
1061      <a href="ft2-raster.html" class="md-nav__link">
1062        Scanline Converter
1063      </a>
1064    </li>
1065
1066
1067
1068
1069
1070
1071
1072    <li class="md-nav__item">
1073      <a href="ft2-glyph_stroker.html" class="md-nav__link">
1074        Glyph Stroker
1075      </a>
1076    </li>
1077
1078
1079
1080
1081
1082
1083
1084    <li class="md-nav__item">
1085      <a href="ft2-system_interface.html" class="md-nav__link">
1086        System Interface
1087      </a>
1088    </li>
1089
1090
1091
1092
1093
1094
1095
1096    <li class="md-nav__item">
1097      <a href="ft2-module_management.html" class="md-nav__link">
1098        Module Management
1099      </a>
1100    </li>
1101
1102
1103
1104
1105
1106
1107
1108    <li class="md-nav__item">
1109      <a href="ft2-gzip.html" class="md-nav__link">
1110        GZIP Streams
1111      </a>
1112    </li>
1113
1114
1115
1116
1117
1118
1119
1120    <li class="md-nav__item">
1121      <a href="ft2-lzw.html" class="md-nav__link">
1122        LZW Streams
1123      </a>
1124    </li>
1125
1126
1127
1128
1129
1130
1131
1132    <li class="md-nav__item">
1133      <a href="ft2-bzip2.html" class="md-nav__link">
1134        BZIP2 Streams
1135      </a>
1136    </li>
1137
1138
1139
1140
1141
1142
1143
1144    <li class="md-nav__item">
1145      <a href="ft2-debugging_apis.html" class="md-nav__link">
1146        External Debugging APIs
1147      </a>
1148    </li>
1149
1150
1151
1152        </ul>
1153      </nav>
1154    </li>
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166    <li class="md-nav__item md-nav__item--nested">
1167
1168
1169        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
1170
1171      <label class="md-nav__link" for="__nav_9">
1172        Error Codes
1173        <span class="md-nav__icon md-icon"></span>
1174      </label>
1175      <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
1176        <label class="md-nav__title" for="__nav_9">
1177          <span class="md-nav__icon md-icon"></span>
1178          Error Codes
1179        </label>
1180        <ul class="md-nav__list" data-md-scrollfix>
1181
1182
1183
1184
1185
1186    <li class="md-nav__item">
1187      <a href="ft2-error_enumerations.html" class="md-nav__link">
1188        Error Enumerations
1189      </a>
1190    </li>
1191
1192
1193
1194
1195
1196
1197
1198    <li class="md-nav__item">
1199      <a href="ft2-error_code_values.html" class="md-nav__link">
1200        Error Code Values
1201      </a>
1202    </li>
1203
1204
1205
1206        </ul>
1207      </nav>
1208    </li>
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220    <li class="md-nav__item md-nav__item--nested">
1221
1222
1223        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
1224
1225      <label class="md-nav__link" for="__nav_10">
1226        Miscellaneous
1227        <span class="md-nav__icon md-icon"></span>
1228      </label>
1229      <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
1230        <label class="md-nav__title" for="__nav_10">
1231          <span class="md-nav__icon md-icon"></span>
1232          Miscellaneous
1233        </label>
1234        <ul class="md-nav__list" data-md-scrollfix>
1235
1236
1237
1238
1239
1240    <li class="md-nav__item">
1241      <a href="ft2-gx_validation.html" class="md-nav__link">
1242        TrueTypeGX/AAT Validation
1243      </a>
1244    </li>
1245
1246
1247
1248
1249
1250
1251
1252    <li class="md-nav__item">
1253      <a href="ft2-incremental.html" class="md-nav__link">
1254        Incremental Loading
1255      </a>
1256    </li>
1257
1258
1259
1260
1261
1262
1263
1264    <li class="md-nav__item">
1265      <a href="ft2-truetype_engine.html" class="md-nav__link">
1266        The TrueType Engine
1267      </a>
1268    </li>
1269
1270
1271
1272
1273
1274
1275
1276    <li class="md-nav__item">
1277      <a href="ft2-ot_validation.html" class="md-nav__link">
1278        OpenType Validation
1279      </a>
1280    </li>
1281
1282
1283
1284        </ul>
1285      </nav>
1286    </li>
1287
1288
1289
1290  </ul>
1291</nav>
1292                  </div>
1293                </div>
1294              </div>
1295
1296
1297
1298              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1299                <div class="md-sidebar__scrollwrap">
1300                  <div class="md-sidebar__inner">
1301
1302<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1303
1304
1305
1306
1307
1308
1309    <label class="md-nav__title" for="__toc">
1310      <span class="md-nav__icon md-icon"></span>
1311      Table of contents
1312    </label>
1313    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1314
1315        <li class="md-nav__item">
1316  <a href="#synopsis" class="md-nav__link">
1317    Synopsis
1318  </a>
1319
1320</li>
1321
1322        <li class="md-nav__item">
1323  <a href="#ft_muldiv" class="md-nav__link">
1324    FT_MulDiv
1325  </a>
1326
1327</li>
1328
1329        <li class="md-nav__item">
1330  <a href="#ft_mulfix" class="md-nav__link">
1331    FT_MulFix
1332  </a>
1333
1334</li>
1335
1336        <li class="md-nav__item">
1337  <a href="#ft_divfix" class="md-nav__link">
1338    FT_DivFix
1339  </a>
1340
1341</li>
1342
1343        <li class="md-nav__item">
1344  <a href="#ft_roundfix" class="md-nav__link">
1345    FT_RoundFix
1346  </a>
1347
1348</li>
1349
1350        <li class="md-nav__item">
1351  <a href="#ft_ceilfix" class="md-nav__link">
1352    FT_CeilFix
1353  </a>
1354
1355</li>
1356
1357        <li class="md-nav__item">
1358  <a href="#ft_floorfix" class="md-nav__link">
1359    FT_FloorFix
1360  </a>
1361
1362</li>
1363
1364        <li class="md-nav__item">
1365  <a href="#ft_vector_transform" class="md-nav__link">
1366    FT_Vector_Transform
1367  </a>
1368
1369</li>
1370
1371        <li class="md-nav__item">
1372  <a href="#ft_matrix_multiply" class="md-nav__link">
1373    FT_Matrix_Multiply
1374  </a>
1375
1376</li>
1377
1378        <li class="md-nav__item">
1379  <a href="#ft_matrix_invert" class="md-nav__link">
1380    FT_Matrix_Invert
1381  </a>
1382
1383</li>
1384
1385        <li class="md-nav__item">
1386  <a href="#ft_angle" class="md-nav__link">
1387    FT_Angle
1388  </a>
1389
1390</li>
1391
1392        <li class="md-nav__item">
1393  <a href="#ft_angle_pi" class="md-nav__link">
1394    FT_ANGLE_PI
1395  </a>
1396
1397</li>
1398
1399        <li class="md-nav__item">
1400  <a href="#ft_angle_2pi" class="md-nav__link">
1401    FT_ANGLE_2PI
1402  </a>
1403
1404</li>
1405
1406        <li class="md-nav__item">
1407  <a href="#ft_angle_pi2" class="md-nav__link">
1408    FT_ANGLE_PI2
1409  </a>
1410
1411</li>
1412
1413        <li class="md-nav__item">
1414  <a href="#ft_angle_pi4" class="md-nav__link">
1415    FT_ANGLE_PI4
1416  </a>
1417
1418</li>
1419
1420        <li class="md-nav__item">
1421  <a href="#ft_sin" class="md-nav__link">
1422    FT_Sin
1423  </a>
1424
1425</li>
1426
1427        <li class="md-nav__item">
1428  <a href="#ft_cos" class="md-nav__link">
1429    FT_Cos
1430  </a>
1431
1432</li>
1433
1434        <li class="md-nav__item">
1435  <a href="#ft_tan" class="md-nav__link">
1436    FT_Tan
1437  </a>
1438
1439</li>
1440
1441        <li class="md-nav__item">
1442  <a href="#ft_atan2" class="md-nav__link">
1443    FT_Atan2
1444  </a>
1445
1446</li>
1447
1448        <li class="md-nav__item">
1449  <a href="#ft_angle_diff" class="md-nav__link">
1450    FT_Angle_Diff
1451  </a>
1452
1453</li>
1454
1455        <li class="md-nav__item">
1456  <a href="#ft_vector_unit" class="md-nav__link">
1457    FT_Vector_Unit
1458  </a>
1459
1460</li>
1461
1462        <li class="md-nav__item">
1463  <a href="#ft_vector_rotate" class="md-nav__link">
1464    FT_Vector_Rotate
1465  </a>
1466
1467</li>
1468
1469        <li class="md-nav__item">
1470  <a href="#ft_vector_length" class="md-nav__link">
1471    FT_Vector_Length
1472  </a>
1473
1474</li>
1475
1476        <li class="md-nav__item">
1477  <a href="#ft_vector_polarize" class="md-nav__link">
1478    FT_Vector_Polarize
1479  </a>
1480
1481</li>
1482
1483        <li class="md-nav__item">
1484  <a href="#ft_vector_from_polar" class="md-nav__link">
1485    FT_Vector_From_Polar
1486  </a>
1487
1488</li>
1489
1490    </ul>
1491
1492</nav>
1493                  </div>
1494                </div>
1495              </div>
1496
1497
1498          <div class="md-content" data-md-component="content">
1499            <article class="md-content__inner md-typeset">
1500
1501
1502
1503                <p><a href="https://www.freetype.org">FreeType</a> &raquo; <a href="../">Docs</a> &raquo; <a href="index.html#support-api">Support API</a> &raquo; Computations</p>
1504<hr />
1505<h1 id="computations">Computations<a class="headerlink" href="#computations" title="Permanent link">&para;</a></h1>
1506<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1507<p>This section contains various functions used to perform computations on 16.16 fixed-float numbers or 2d vectors.</p>
1508<p><strong>Attention</strong>: Most arithmetic functions take <code>FT_Long</code> as arguments. For historical reasons, FreeType was designed under the assumption that <code>FT_Long</code> is a 32-bit integer; results can thus be undefined if the arguments don't fit into 32 bits.</p>
1509<h2 id="ft_muldiv">FT_MulDiv<a class="headerlink" href="#ft_muldiv" title="Permanent link">&para;</a></h2>
1510<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1511<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_long">FT_Long</a> )
1512  <b>FT_MulDiv</b>( <a href="ft2-basic_types.html#ft_long">FT_Long</a>  a,
1513             <a href="ft2-basic_types.html#ft_long">FT_Long</a>  b,
1514             <a href="ft2-basic_types.html#ft_long">FT_Long</a>  c );
1515</code></pre></div>
1516
1517<p>Compute <code>(a*b)/c</code> with maximum accuracy, using a 64-bit intermediate integer whenever necessary.</p>
1518<p>This function isn't necessarily as fast as some processor-specific operations, but is at least completely portable.</p>
1519<h4>input</h4>
1520<table class="fields">
1521<tr><td class="val" id="a">a</td><td class="desc">
1522<p>The first multiplier.</p>
1523</td></tr>
1524<tr><td class="val" id="b">b</td><td class="desc">
1525<p>The second multiplier.</p>
1526</td></tr>
1527<tr><td class="val" id="c">c</td><td class="desc">
1528<p>The divisor.</p>
1529</td></tr>
1530</table>
1531
1532<h4>return</h4>
1533
1534<p>The result of <code>(a*b)/c</code>. This function never traps when trying to divide by zero; it simply returns &lsquo;MaxInt&rsquo; or &lsquo;MinInt&rsquo; depending on the signs of <code>a</code> and <code>b</code>.</p>
1535<hr>
1536
1537<h2 id="ft_mulfix">FT_MulFix<a class="headerlink" href="#ft_mulfix" title="Permanent link">&para;</a></h2>
1538<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1539<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_long">FT_Long</a> )
1540  <b>FT_MulFix</b>( <a href="ft2-basic_types.html#ft_long">FT_Long</a>  a,
1541             <a href="ft2-basic_types.html#ft_long">FT_Long</a>  b );
1542</code></pre></div>
1543
1544<p>Compute <code>(a*b)/0x10000</code> with maximum accuracy. Its main use is to multiply a given value by a 16.16 fixed-point factor.</p>
1545<h4>input</h4>
1546<table class="fields">
1547<tr><td class="val" id="a">a</td><td class="desc">
1548<p>The first multiplier.</p>
1549</td></tr>
1550<tr><td class="val" id="b">b</td><td class="desc">
1551<p>The second multiplier. Use a 16.16 factor here whenever possible (see note below).</p>
1552</td></tr>
1553</table>
1554
1555<h4>return</h4>
1556
1557<p>The result of <code>(a*b)/0x10000</code>.</p>
1558<h4>note</h4>
1559
1560<p>This function has been optimized for the case where the absolute value of <code>a</code> is less than 2048, and <code>b</code> is a 16.16 scaling factor. As this happens mainly when scaling from notional units to fractional pixels in FreeType, it resulted in noticeable speed improvements between versions 2.x and 1.x.</p>
1561<p>As a conclusion, always try to place a 16.16 factor as the <em>second</em> argument of this function; this can make a great difference.</p>
1562<hr>
1563
1564<h2 id="ft_divfix">FT_DivFix<a class="headerlink" href="#ft_divfix" title="Permanent link">&para;</a></h2>
1565<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1566<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_long">FT_Long</a> )
1567  <b>FT_DivFix</b>( <a href="ft2-basic_types.html#ft_long">FT_Long</a>  a,
1568             <a href="ft2-basic_types.html#ft_long">FT_Long</a>  b );
1569</code></pre></div>
1570
1571<p>Compute <code>(a*0x10000)/b</code> with maximum accuracy. Its main use is to divide a given value by a 16.16 fixed-point factor.</p>
1572<h4>input</h4>
1573<table class="fields">
1574<tr><td class="val" id="a">a</td><td class="desc">
1575<p>The numerator.</p>
1576</td></tr>
1577<tr><td class="val" id="b">b</td><td class="desc">
1578<p>The denominator. Use a 16.16 factor here.</p>
1579</td></tr>
1580</table>
1581
1582<h4>return</h4>
1583
1584<p>The result of <code>(a*0x10000)/b</code>.</p>
1585<hr>
1586
1587<h2 id="ft_roundfix">FT_RoundFix<a class="headerlink" href="#ft_roundfix" title="Permanent link">&para;</a></h2>
1588<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1589<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1590  <b>FT_RoundFix</b>( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  a );
1591</code></pre></div>
1592
1593<p>Round a 16.16 fixed number.</p>
1594<h4>input</h4>
1595<table class="fields">
1596<tr><td class="val" id="a">a</td><td class="desc">
1597<p>The number to be rounded.</p>
1598</td></tr>
1599</table>
1600
1601<h4>return</h4>
1602
1603<p><code>a</code> rounded to the nearest 16.16 fixed integer, halfway cases away from zero.</p>
1604<h4>note</h4>
1605
1606<p>The function uses wrap-around arithmetic.</p>
1607<hr>
1608
1609<h2 id="ft_ceilfix">FT_CeilFix<a class="headerlink" href="#ft_ceilfix" title="Permanent link">&para;</a></h2>
1610<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1611<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1612  <b>FT_CeilFix</b>( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  a );
1613</code></pre></div>
1614
1615<p>Compute the smallest following integer of a 16.16 fixed number.</p>
1616<h4>input</h4>
1617<table class="fields">
1618<tr><td class="val" id="a">a</td><td class="desc">
1619<p>The number for which the ceiling function is to be computed.</p>
1620</td></tr>
1621</table>
1622
1623<h4>return</h4>
1624
1625<p><code>a</code> rounded towards plus infinity.</p>
1626<h4>note</h4>
1627
1628<p>The function uses wrap-around arithmetic.</p>
1629<hr>
1630
1631<h2 id="ft_floorfix">FT_FloorFix<a class="headerlink" href="#ft_floorfix" title="Permanent link">&para;</a></h2>
1632<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1633<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1634  <b>FT_FloorFix</b>( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  a );
1635</code></pre></div>
1636
1637<p>Compute the largest previous integer of a 16.16 fixed number.</p>
1638<h4>input</h4>
1639<table class="fields">
1640<tr><td class="val" id="a">a</td><td class="desc">
1641<p>The number for which the floor function is to be computed.</p>
1642</td></tr>
1643</table>
1644
1645<h4>return</h4>
1646
1647<p><code>a</code> rounded towards minus infinity.</p>
1648<hr>
1649
1650<h2 id="ft_vector_transform">FT_Vector_Transform<a class="headerlink" href="#ft_vector_transform" title="Permanent link">&para;</a></h2>
1651<p>Defined in FT_FREETYPE_H (freetype/freetype.h).</p>
1652<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1653  <b>FT_Vector_Transform</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*        vector,
1654                       <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*  matrix );
1655</code></pre></div>
1656
1657<p>Transform a single vector through a 2x2 matrix.</p>
1658<h4>inout</h4>
1659<table class="fields">
1660<tr><td class="val" id="vector">vector</td><td class="desc">
1661<p>The target vector to transform.</p>
1662</td></tr>
1663</table>
1664
1665<h4>input</h4>
1666<table class="fields">
1667<tr><td class="val" id="matrix">matrix</td><td class="desc">
1668<p>A pointer to the source 2x2 matrix.</p>
1669</td></tr>
1670</table>
1671
1672<h4>note</h4>
1673
1674<p>The result is undefined if either <code>vector</code> or <code>matrix</code> is invalid.</p>
1675<hr>
1676
1677<h2 id="ft_matrix_multiply">FT_Matrix_Multiply<a class="headerlink" href="#ft_matrix_multiply" title="Permanent link">&para;</a></h2>
1678<p>Defined in FT_GLYPH_H (freetype/ftglyph.h).</p>
1679<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1680  <b>FT_Matrix_Multiply</b>( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*  a,
1681                      <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*        b );
1682</code></pre></div>
1683
1684<p>Perform the matrix operation <code>b = a*b</code>.</p>
1685<h4>input</h4>
1686<table class="fields">
1687<tr><td class="val" id="a">a</td><td class="desc">
1688<p>A pointer to matrix <code>a</code>.</p>
1689</td></tr>
1690</table>
1691
1692<h4>inout</h4>
1693<table class="fields">
1694<tr><td class="val" id="b">b</td><td class="desc">
1695<p>A pointer to matrix <code>b</code>.</p>
1696</td></tr>
1697</table>
1698
1699<h4>note</h4>
1700
1701<p>The result is undefined if either <code>a</code> or <code>b</code> is zero.</p>
1702<p>Since the function uses wrap-around arithmetic, results become meaningless if the arguments are very large.</p>
1703<hr>
1704
1705<h2 id="ft_matrix_invert">FT_Matrix_Invert<a class="headerlink" href="#ft_matrix_invert" title="Permanent link">&para;</a></h2>
1706<p>Defined in FT_GLYPH_H (freetype/ftglyph.h).</p>
1707<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1708  <b>FT_Matrix_Invert</b>( <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*  matrix );
1709</code></pre></div>
1710
1711<p>Invert a 2x2 matrix. Return an error if it can't be inverted.</p>
1712<h4>inout</h4>
1713<table class="fields">
1714<tr><td class="val" id="matrix">matrix</td><td class="desc">
1715<p>A pointer to the target matrix. Remains untouched in case of error.</p>
1716</td></tr>
1717</table>
1718
1719<h4>return</h4>
1720
1721<p>FreeType error code. 0&nbsp;means success.</p>
1722<hr>
1723
1724<h2 id="ft_angle">FT_Angle<a class="headerlink" href="#ft_angle" title="Permanent link">&para;</a></h2>
1725<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1726<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  <b>FT_Angle</b>;
1727</code></pre></div>
1728
1729<p>This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed-point value expressed in degrees.</p>
1730<hr>
1731
1732<h2 id="ft_angle_pi">FT_ANGLE_PI<a class="headerlink" href="#ft_angle_pi" title="Permanent link">&para;</a></h2>
1733<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1734<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <b>FT_ANGLE_PI</b>  ( 180L &lt;&lt; 16 )
1735</code></pre></div>
1736
1737<p>The angle pi expressed in <code><a href="ft2-computations.html#ft_angle">FT_Angle</a></code> units.</p>
1738<hr>
1739
1740<h2 id="ft_angle_2pi">FT_ANGLE_2PI<a class="headerlink" href="#ft_angle_2pi" title="Permanent link">&para;</a></h2>
1741<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1742<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <b>FT_ANGLE_2PI</b>  ( <a href="ft2-computations.html#ft_angle_pi">FT_ANGLE_PI</a> * 2 )
1743</code></pre></div>
1744
1745<p>The angle 2*pi expressed in <code><a href="ft2-computations.html#ft_angle">FT_Angle</a></code> units.</p>
1746<hr>
1747
1748<h2 id="ft_angle_pi2">FT_ANGLE_PI2<a class="headerlink" href="#ft_angle_pi2" title="Permanent link">&para;</a></h2>
1749<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1750<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <b>FT_ANGLE_PI2</b>  ( <a href="ft2-computations.html#ft_angle_pi">FT_ANGLE_PI</a> / 2 )
1751</code></pre></div>
1752
1753<p>The angle pi/2 expressed in <code><a href="ft2-computations.html#ft_angle">FT_Angle</a></code> units.</p>
1754<hr>
1755
1756<h2 id="ft_angle_pi4">FT_ANGLE_PI4<a class="headerlink" href="#ft_angle_pi4" title="Permanent link">&para;</a></h2>
1757<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1758<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <b>FT_ANGLE_PI4</b>  ( <a href="ft2-computations.html#ft_angle_pi">FT_ANGLE_PI</a> / 4 )
1759</code></pre></div>
1760
1761<p>The angle pi/4 expressed in <code><a href="ft2-computations.html#ft_angle">FT_Angle</a></code> units.</p>
1762<hr>
1763
1764<h2 id="ft_sin">FT_Sin<a class="headerlink" href="#ft_sin" title="Permanent link">&para;</a></h2>
1765<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1766<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1767  <b>FT_Sin</b>( <a href="ft2-computations.html#ft_angle">FT_Angle</a>  angle );
1768</code></pre></div>
1769
1770<p>Return the sinus of a given angle in fixed-point format.</p>
1771<h4>input</h4>
1772<table class="fields">
1773<tr><td class="val" id="angle">angle</td><td class="desc">
1774<p>The input angle.</p>
1775</td></tr>
1776</table>
1777
1778<h4>return</h4>
1779
1780<p>The sinus value.</p>
1781<h4>note</h4>
1782
1783<p>If you need both the sinus and cosinus for a given angle, use the function <code><a href="ft2-computations.html#ft_vector_unit">FT_Vector_Unit</a></code>.</p>
1784<hr>
1785
1786<h2 id="ft_cos">FT_Cos<a class="headerlink" href="#ft_cos" title="Permanent link">&para;</a></h2>
1787<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1788<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1789  <b>FT_Cos</b>( <a href="ft2-computations.html#ft_angle">FT_Angle</a>  angle );
1790</code></pre></div>
1791
1792<p>Return the cosinus of a given angle in fixed-point format.</p>
1793<h4>input</h4>
1794<table class="fields">
1795<tr><td class="val" id="angle">angle</td><td class="desc">
1796<p>The input angle.</p>
1797</td></tr>
1798</table>
1799
1800<h4>return</h4>
1801
1802<p>The cosinus value.</p>
1803<h4>note</h4>
1804
1805<p>If you need both the sinus and cosinus for a given angle, use the function <code><a href="ft2-computations.html#ft_vector_unit">FT_Vector_Unit</a></code>.</p>
1806<hr>
1807
1808<h2 id="ft_tan">FT_Tan<a class="headerlink" href="#ft_tan" title="Permanent link">&para;</a></h2>
1809<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1810<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1811  <b>FT_Tan</b>( <a href="ft2-computations.html#ft_angle">FT_Angle</a>  angle );
1812</code></pre></div>
1813
1814<p>Return the tangent of a given angle in fixed-point format.</p>
1815<h4>input</h4>
1816<table class="fields">
1817<tr><td class="val" id="angle">angle</td><td class="desc">
1818<p>The input angle.</p>
1819</td></tr>
1820</table>
1821
1822<h4>return</h4>
1823
1824<p>The tangent value.</p>
1825<hr>
1826
1827<h2 id="ft_atan2">FT_Atan2<a class="headerlink" href="#ft_atan2" title="Permanent link">&para;</a></h2>
1828<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1829<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-computations.html#ft_angle">FT_Angle</a> )
1830  <b>FT_Atan2</b>( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  x,
1831            <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>  y );
1832</code></pre></div>
1833
1834<p>Return the arc-tangent corresponding to a given vector (x,y) in the 2d plane.</p>
1835<h4>input</h4>
1836<table class="fields">
1837<tr><td class="val" id="x">x</td><td class="desc">
1838<p>The horizontal vector coordinate.</p>
1839</td></tr>
1840<tr><td class="val" id="y">y</td><td class="desc">
1841<p>The vertical vector coordinate.</p>
1842</td></tr>
1843</table>
1844
1845<h4>return</h4>
1846
1847<p>The arc-tangent value (i.e. angle).</p>
1848<hr>
1849
1850<h2 id="ft_angle_diff">FT_Angle_Diff<a class="headerlink" href="#ft_angle_diff" title="Permanent link">&para;</a></h2>
1851<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1852<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-computations.html#ft_angle">FT_Angle</a> )
1853  <b>FT_Angle_Diff</b>( <a href="ft2-computations.html#ft_angle">FT_Angle</a>  angle1,
1854                 <a href="ft2-computations.html#ft_angle">FT_Angle</a>  angle2 );
1855</code></pre></div>
1856
1857<p>Return the difference between two angles. The result is always constrained to the ]-PI..PI] interval.</p>
1858<h4>input</h4>
1859<table class="fields">
1860<tr><td class="val" id="angle1">angle1</td><td class="desc">
1861<p>First angle.</p>
1862</td></tr>
1863<tr><td class="val" id="angle2">angle2</td><td class="desc">
1864<p>Second angle.</p>
1865</td></tr>
1866</table>
1867
1868<h4>return</h4>
1869
1870<p>Constrained value of <code>angle2-angle1</code>.</p>
1871<hr>
1872
1873<h2 id="ft_vector_unit">FT_Vector_Unit<a class="headerlink" href="#ft_vector_unit" title="Permanent link">&para;</a></h2>
1874<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1875<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1876  <b>FT_Vector_Unit</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  vec,
1877                  <a href="ft2-computations.html#ft_angle">FT_Angle</a>    angle );
1878</code></pre></div>
1879
1880<p>Return the unit vector corresponding to a given angle. After the call, the value of <code>vec.x</code> will be <code>cos(angle)</code>, and the value of <code>vec.y</code> will be <code>sin(angle)</code>.</p>
1881<p>This function is useful to retrieve both the sinus and cosinus of a given angle quickly.</p>
1882<h4>output</h4>
1883<table class="fields">
1884<tr><td class="val" id="vec">vec</td><td class="desc">
1885<p>The address of target vector.</p>
1886</td></tr>
1887</table>
1888
1889<h4>input</h4>
1890<table class="fields">
1891<tr><td class="val" id="angle">angle</td><td class="desc">
1892<p>The input angle.</p>
1893</td></tr>
1894</table>
1895
1896<hr>
1897
1898<h2 id="ft_vector_rotate">FT_Vector_Rotate<a class="headerlink" href="#ft_vector_rotate" title="Permanent link">&para;</a></h2>
1899<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1900<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1901  <b>FT_Vector_Rotate</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  vec,
1902                    <a href="ft2-computations.html#ft_angle">FT_Angle</a>    angle );
1903</code></pre></div>
1904
1905<p>Rotate a vector by a given angle.</p>
1906<h4>inout</h4>
1907<table class="fields">
1908<tr><td class="val" id="vec">vec</td><td class="desc">
1909<p>The address of target vector.</p>
1910</td></tr>
1911</table>
1912
1913<h4>input</h4>
1914<table class="fields">
1915<tr><td class="val" id="angle">angle</td><td class="desc">
1916<p>The input angle.</p>
1917</td></tr>
1918</table>
1919
1920<hr>
1921
1922<h2 id="ft_vector_length">FT_Vector_Length<a class="headerlink" href="#ft_vector_length" title="Permanent link">&para;</a></h2>
1923<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1924<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> )
1925  <b>FT_Vector_Length</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  vec );
1926</code></pre></div>
1927
1928<p>Return the length of a given vector.</p>
1929<h4>input</h4>
1930<table class="fields">
1931<tr><td class="val" id="vec">vec</td><td class="desc">
1932<p>The address of target vector.</p>
1933</td></tr>
1934</table>
1935
1936<h4>return</h4>
1937
1938<p>The vector length, expressed in the same units that the original vector coordinates.</p>
1939<hr>
1940
1941<h2 id="ft_vector_polarize">FT_Vector_Polarize<a class="headerlink" href="#ft_vector_polarize" title="Permanent link">&para;</a></h2>
1942<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1943<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1944  <b>FT_Vector_Polarize</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  vec,
1945                      <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>   *length,
1946                      <a href="ft2-computations.html#ft_angle">FT_Angle</a>   *angle );
1947</code></pre></div>
1948
1949<p>Compute both the length and angle of a given vector.</p>
1950<h4>input</h4>
1951<table class="fields">
1952<tr><td class="val" id="vec">vec</td><td class="desc">
1953<p>The address of source vector.</p>
1954</td></tr>
1955</table>
1956
1957<h4>output</h4>
1958<table class="fields">
1959<tr><td class="val" id="length">length</td><td class="desc">
1960<p>The vector length.</p>
1961</td></tr>
1962<tr><td class="val" id="angle">angle</td><td class="desc">
1963<p>The vector angle.</p>
1964</td></tr>
1965</table>
1966
1967<hr>
1968
1969<h2 id="ft_vector_from_polar">FT_Vector_From_Polar<a class="headerlink" href="#ft_vector_from_polar" title="Permanent link">&para;</a></h2>
1970<p>Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).</p>
1971<div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1972  <b>FT_Vector_From_Polar</b>( <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  vec,
1973                        <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a>    length,
1974                        <a href="ft2-computations.html#ft_angle">FT_Angle</a>    angle );
1975</code></pre></div>
1976
1977<p>Compute vector coordinates from a length and angle.</p>
1978<h4>output</h4>
1979<table class="fields">
1980<tr><td class="val" id="vec">vec</td><td class="desc">
1981<p>The address of source vector.</p>
1982</td></tr>
1983</table>
1984
1985<h4>input</h4>
1986<table class="fields">
1987<tr><td class="val" id="length">length</td><td class="desc">
1988<p>The vector length.</p>
1989</td></tr>
1990<tr><td class="val" id="angle">angle</td><td class="desc">
1991<p>The vector angle.</p>
1992</td></tr>
1993</table>
1994
1995<hr>
1996
1997
1998
1999
2000
2001
2002
2003            </article>
2004          </div>
2005        </div>
2006
2007      </main>
2008
2009
2010<footer class="md-footer">
2011
2012    <nav class="md-footer__inner md-grid" aria-label="Footer">
2013
2014
2015        <a href="ft2-cache_subsystem.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Cache Sub-System" rel="prev">
2016          <div class="md-footer__button md-icon">
2017            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2018          </div>
2019          <div class="md-footer__title">
2020            <div class="md-ellipsis">
2021              <span class="md-footer__direction">
2022                Previous
2023              </span>
2024              Cache Sub-System
2025            </div>
2026          </div>
2027        </a>
2028
2029
2030
2031        <a href="ft2-list_processing.html" class="md-footer__link md-footer__link--next" aria-label="Next: List Processing" rel="next">
2032          <div class="md-footer__title">
2033            <div class="md-ellipsis">
2034              <span class="md-footer__direction">
2035                Next
2036              </span>
2037              List Processing
2038            </div>
2039          </div>
2040          <div class="md-footer__button md-icon">
2041            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2042          </div>
2043        </a>
2044
2045    </nav>
2046
2047  <div class="md-footer-meta md-typeset">
2048    <div class="md-footer-meta__inner md-grid">
2049      <div class="md-footer-copyright">
2050
2051          <div class="md-footer-copyright__highlight">
2052            Copyright 2022 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
2053          </div>
2054
2055        Made with
2056        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2057          Material for MkDocs
2058        </a>
2059
2060      </div>
2061
2062    </div>
2063  </div>
2064</footer>
2065
2066    </div>
2067    <div class="md-dialog" data-md-component="dialog">
2068      <div class="md-dialog__inner md-typeset"></div>
2069    </div>
2070    <script id="__config" type="application/json">{"base": ".", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "assets/javascripts/workers/search.477d984a.min.js", "version": null}</script>
2071
2072
2073      <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
2074
2075        <script src="javascripts/extra.js"></script>
2076
2077
2078  </body>
2079</html>