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> » <a href="../">Docs</a> » <a href="index.html#support-api">Support API</a> » Computations</p> 1504<hr /> 1505<h1 id="computations">Computations<a class="headerlink" href="#computations" title="Permanent link">¶</a></h1> 1506<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">¶</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">¶</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 ‘MaxInt’ or ‘MinInt’ 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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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 means success.</p> 1722<hr> 1723 1724<h2 id="ft_angle">FT_Angle<a class="headerlink" href="#ft_angle" title="Permanent link">¶</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">¶</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 << 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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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>