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