• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8
9        <meta name="description" content="API Reference Documentation for FreeType-2.12.1">
10
11
12
13        <meta name="author" content="FreeType Contributors">
14
15
16      <link rel="icon" href="images/favico.ico">
17      <meta name="generator" content="mkdocs-1.2.1, mkdocs-material-7.1.9">
18
19
20
21        <title>Scanline Converter - 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="#scanline-converter" 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              Scanline Converter
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    <li class="md-nav__item">
793      <a href="ft2-computations.html" class="md-nav__link">
794        Computations
795      </a>
796    </li>
797
798
799
800
801
802
803
804    <li class="md-nav__item">
805      <a href="ft2-list_processing.html" class="md-nav__link">
806        List Processing
807      </a>
808    </li>
809
810
811
812
813
814
815
816    <li class="md-nav__item">
817      <a href="ft2-outline_processing.html" class="md-nav__link">
818        Outline Processing
819      </a>
820    </li>
821
822
823
824
825
826
827
828    <li class="md-nav__item">
829      <a href="ft2-quick_advance.html" class="md-nav__link">
830        Quick retrieval of advance values
831      </a>
832    </li>
833
834
835
836
837
838
839
840    <li class="md-nav__item">
841      <a href="ft2-bitmap_handling.html" class="md-nav__link">
842        Bitmap Handling
843      </a>
844    </li>
845
846
847
848
849
850
851
852
853
854    <li class="md-nav__item md-nav__item--active">
855
856      <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
857
858
859
860
861
862        <label class="md-nav__link md-nav__link--active" for="__toc">
863          Scanline Converter
864          <span class="md-nav__icon md-icon"></span>
865        </label>
866
867      <a href="ft2-raster.html" class="md-nav__link md-nav__link--active">
868        Scanline Converter
869      </a>
870
871
872<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
873
874
875
876
877
878
879    <label class="md-nav__title" for="__toc">
880      <span class="md-nav__icon md-icon"></span>
881      Table of contents
882    </label>
883    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
884
885        <li class="md-nav__item">
886  <a href="#synopsis" class="md-nav__link">
887    Synopsis
888  </a>
889
890</li>
891
892        <li class="md-nav__item">
893  <a href="#ft_span" class="md-nav__link">
894    FT_Span
895  </a>
896
897</li>
898
899        <li class="md-nav__item">
900  <a href="#ft_spanfunc" class="md-nav__link">
901    FT_SpanFunc
902  </a>
903
904</li>
905
906        <li class="md-nav__item">
907  <a href="#ft_raster_params" class="md-nav__link">
908    FT_Raster_Params
909  </a>
910
911</li>
912
913        <li class="md-nav__item">
914  <a href="#ft_raster_flag_xxx" class="md-nav__link">
915    FT_RASTER_FLAG_XXX
916  </a>
917
918</li>
919
920        <li class="md-nav__item">
921  <a href="#ft_raster" class="md-nav__link">
922    FT_Raster
923  </a>
924
925</li>
926
927        <li class="md-nav__item">
928  <a href="#ft_raster_newfunc" class="md-nav__link">
929    FT_Raster_NewFunc
930  </a>
931
932</li>
933
934        <li class="md-nav__item">
935  <a href="#ft_raster_donefunc" class="md-nav__link">
936    FT_Raster_DoneFunc
937  </a>
938
939</li>
940
941        <li class="md-nav__item">
942  <a href="#ft_raster_resetfunc" class="md-nav__link">
943    FT_Raster_ResetFunc
944  </a>
945
946</li>
947
948        <li class="md-nav__item">
949  <a href="#ft_raster_setmodefunc" class="md-nav__link">
950    FT_Raster_SetModeFunc
951  </a>
952
953</li>
954
955        <li class="md-nav__item">
956  <a href="#ft_raster_renderfunc" class="md-nav__link">
957    FT_Raster_RenderFunc
958  </a>
959
960</li>
961
962        <li class="md-nav__item">
963  <a href="#ft_raster_funcs" class="md-nav__link">
964    FT_Raster_Funcs
965  </a>
966
967</li>
968
969        <li class="md-nav__item">
970  <a href="#ft_raster_bittest_func" class="md-nav__link">
971    FT_Raster_BitTest_Func
972  </a>
973
974</li>
975
976        <li class="md-nav__item">
977  <a href="#ft_raster_bitset_func" class="md-nav__link">
978    FT_Raster_BitSet_Func
979  </a>
980
981</li>
982
983    </ul>
984
985</nav>
986
987    </li>
988
989
990
991
992
993
994
995    <li class="md-nav__item">
996      <a href="ft2-glyph_stroker.html" class="md-nav__link">
997        Glyph Stroker
998      </a>
999    </li>
1000
1001
1002
1003
1004
1005
1006
1007    <li class="md-nav__item">
1008      <a href="ft2-system_interface.html" class="md-nav__link">
1009        System Interface
1010      </a>
1011    </li>
1012
1013
1014
1015
1016
1017
1018
1019    <li class="md-nav__item">
1020      <a href="ft2-module_management.html" class="md-nav__link">
1021        Module Management
1022      </a>
1023    </li>
1024
1025
1026
1027
1028
1029
1030
1031    <li class="md-nav__item">
1032      <a href="ft2-gzip.html" class="md-nav__link">
1033        GZIP Streams
1034      </a>
1035    </li>
1036
1037
1038
1039
1040
1041
1042
1043    <li class="md-nav__item">
1044      <a href="ft2-lzw.html" class="md-nav__link">
1045        LZW Streams
1046      </a>
1047    </li>
1048
1049
1050
1051
1052
1053
1054
1055    <li class="md-nav__item">
1056      <a href="ft2-bzip2.html" class="md-nav__link">
1057        BZIP2 Streams
1058      </a>
1059    </li>
1060
1061
1062
1063
1064
1065
1066
1067    <li class="md-nav__item">
1068      <a href="ft2-debugging_apis.html" class="md-nav__link">
1069        External Debugging APIs
1070      </a>
1071    </li>
1072
1073
1074
1075        </ul>
1076      </nav>
1077    </li>
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089    <li class="md-nav__item md-nav__item--nested">
1090
1091
1092        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
1093
1094      <label class="md-nav__link" for="__nav_9">
1095        Error Codes
1096        <span class="md-nav__icon md-icon"></span>
1097      </label>
1098      <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
1099        <label class="md-nav__title" for="__nav_9">
1100          <span class="md-nav__icon md-icon"></span>
1101          Error Codes
1102        </label>
1103        <ul class="md-nav__list" data-md-scrollfix>
1104
1105
1106
1107
1108
1109    <li class="md-nav__item">
1110      <a href="ft2-error_enumerations.html" class="md-nav__link">
1111        Error Enumerations
1112      </a>
1113    </li>
1114
1115
1116
1117
1118
1119
1120
1121    <li class="md-nav__item">
1122      <a href="ft2-error_code_values.html" class="md-nav__link">
1123        Error Code Values
1124      </a>
1125    </li>
1126
1127
1128
1129        </ul>
1130      </nav>
1131    </li>
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143    <li class="md-nav__item md-nav__item--nested">
1144
1145
1146        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
1147
1148      <label class="md-nav__link" for="__nav_10">
1149        Miscellaneous
1150        <span class="md-nav__icon md-icon"></span>
1151      </label>
1152      <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
1153        <label class="md-nav__title" for="__nav_10">
1154          <span class="md-nav__icon md-icon"></span>
1155          Miscellaneous
1156        </label>
1157        <ul class="md-nav__list" data-md-scrollfix>
1158
1159
1160
1161
1162
1163    <li class="md-nav__item">
1164      <a href="ft2-gx_validation.html" class="md-nav__link">
1165        TrueTypeGX/AAT Validation
1166      </a>
1167    </li>
1168
1169
1170
1171
1172
1173
1174
1175    <li class="md-nav__item">
1176      <a href="ft2-incremental.html" class="md-nav__link">
1177        Incremental Loading
1178      </a>
1179    </li>
1180
1181
1182
1183
1184
1185
1186
1187    <li class="md-nav__item">
1188      <a href="ft2-truetype_engine.html" class="md-nav__link">
1189        The TrueType Engine
1190      </a>
1191    </li>
1192
1193
1194
1195
1196
1197
1198
1199    <li class="md-nav__item">
1200      <a href="ft2-ot_validation.html" class="md-nav__link">
1201        OpenType Validation
1202      </a>
1203    </li>
1204
1205
1206
1207        </ul>
1208      </nav>
1209    </li>
1210
1211
1212
1213  </ul>
1214</nav>
1215                  </div>
1216                </div>
1217              </div>
1218
1219
1220
1221              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1222                <div class="md-sidebar__scrollwrap">
1223                  <div class="md-sidebar__inner">
1224
1225<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1226
1227
1228
1229
1230
1231
1232    <label class="md-nav__title" for="__toc">
1233      <span class="md-nav__icon md-icon"></span>
1234      Table of contents
1235    </label>
1236    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1237
1238        <li class="md-nav__item">
1239  <a href="#synopsis" class="md-nav__link">
1240    Synopsis
1241  </a>
1242
1243</li>
1244
1245        <li class="md-nav__item">
1246  <a href="#ft_span" class="md-nav__link">
1247    FT_Span
1248  </a>
1249
1250</li>
1251
1252        <li class="md-nav__item">
1253  <a href="#ft_spanfunc" class="md-nav__link">
1254    FT_SpanFunc
1255  </a>
1256
1257</li>
1258
1259        <li class="md-nav__item">
1260  <a href="#ft_raster_params" class="md-nav__link">
1261    FT_Raster_Params
1262  </a>
1263
1264</li>
1265
1266        <li class="md-nav__item">
1267  <a href="#ft_raster_flag_xxx" class="md-nav__link">
1268    FT_RASTER_FLAG_XXX
1269  </a>
1270
1271</li>
1272
1273        <li class="md-nav__item">
1274  <a href="#ft_raster" class="md-nav__link">
1275    FT_Raster
1276  </a>
1277
1278</li>
1279
1280        <li class="md-nav__item">
1281  <a href="#ft_raster_newfunc" class="md-nav__link">
1282    FT_Raster_NewFunc
1283  </a>
1284
1285</li>
1286
1287        <li class="md-nav__item">
1288  <a href="#ft_raster_donefunc" class="md-nav__link">
1289    FT_Raster_DoneFunc
1290  </a>
1291
1292</li>
1293
1294        <li class="md-nav__item">
1295  <a href="#ft_raster_resetfunc" class="md-nav__link">
1296    FT_Raster_ResetFunc
1297  </a>
1298
1299</li>
1300
1301        <li class="md-nav__item">
1302  <a href="#ft_raster_setmodefunc" class="md-nav__link">
1303    FT_Raster_SetModeFunc
1304  </a>
1305
1306</li>
1307
1308        <li class="md-nav__item">
1309  <a href="#ft_raster_renderfunc" class="md-nav__link">
1310    FT_Raster_RenderFunc
1311  </a>
1312
1313</li>
1314
1315        <li class="md-nav__item">
1316  <a href="#ft_raster_funcs" class="md-nav__link">
1317    FT_Raster_Funcs
1318  </a>
1319
1320</li>
1321
1322        <li class="md-nav__item">
1323  <a href="#ft_raster_bittest_func" class="md-nav__link">
1324    FT_Raster_BitTest_Func
1325  </a>
1326
1327</li>
1328
1329        <li class="md-nav__item">
1330  <a href="#ft_raster_bitset_func" class="md-nav__link">
1331    FT_Raster_BitSet_Func
1332  </a>
1333
1334</li>
1335
1336    </ul>
1337
1338</nav>
1339                  </div>
1340                </div>
1341              </div>
1342
1343
1344          <div class="md-content" data-md-component="content">
1345            <article class="md-content__inner md-typeset">
1346
1347
1348
1349                <p><a href="https://www.freetype.org">FreeType</a> &raquo; <a href="../">Docs</a> &raquo; <a href="index.html#support-api">Support API</a> &raquo; Scanline Converter</p>
1350<hr />
1351<h1 id="scanline-converter">Scanline Converter<a class="headerlink" href="#scanline-converter" title="Permanent link">&para;</a></h1>
1352<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1353<p>A raster or a rasterizer is a scan converter in charge of producing a pixel coverage bitmap that can be used as an alpha channel when compositing a glyph with a background. FreeType comes with two rasterizers: bilevel <code>raster1</code> and anti-aliased <code>smooth</code> are two separate modules. They are usually called from the high-level <code><a href="ft2-base_interface.html#ft_load_glyph">FT_Load_Glyph</a></code> or <code><a href="ft2-base_interface.html#ft_render_glyph">FT_Render_Glyph</a></code> functions and produce the entire coverage bitmap at once, while staying largely invisible to users.</p>
1354<p>Instead of working with complete coverage bitmaps, it is also possible to intercept consecutive pixel runs on the same scanline with the same coverage, called <em>spans</em>, and process them individually. Only the <code>smooth</code> rasterizer permits this when calling <code><a href="ft2-outline_processing.html#ft_outline_render">FT_Outline_Render</a></code> with <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> as described below.</p>
1355<p>Working with either complete bitmaps or spans it is important to think of them as colorless coverage objects suitable as alpha channels to blend arbitrary colors with a background. For best results, it is recommended to use gamma correction, too.</p>
1356<p>This section also describes the public API needed to set up alternative <code><a href="ft2-module_management.html#ft_renderer">FT_Renderer</a></code> modules.</p>
1357<h2 id="ft_span">FT_Span<a class="headerlink" href="#ft_span" title="Permanent link">&para;</a></h2>
1358<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1359<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Span_
1360  {
1361    <span class="keyword">short</span>           x;
1362    <span class="keyword">unsigned</span> <span class="keyword">short</span>  len;
1363    <span class="keyword">unsigned</span> <span class="keyword">char</span>   coverage;
1364
1365  } <b>FT_Span</b>;
1366</code></pre></div>
1367
1368<p>A structure to model a single span of consecutive pixels when rendering an anti-aliased bitmap.</p>
1369<h4>fields</h4>
1370<table class="fields">
1371<tr><td class="val" id="x">x</td><td class="desc">
1372<p>The span's horizontal start position.</p>
1373</td></tr>
1374<tr><td class="val" id="len">len</td><td class="desc">
1375<p>The span's length in pixels.</p>
1376</td></tr>
1377<tr><td class="val" id="coverage">coverage</td><td class="desc">
1378<p>The span color/coverage, ranging from 0 (background) to 255 (foreground).</p>
1379</td></tr>
1380</table>
1381
1382<h4>note</h4>
1383
1384<p>This structure is used by the span drawing callback type named <code><a href="ft2-raster.html#ft_spanfunc">FT_SpanFunc</a></code> that takes the y&nbsp;coordinate of the span as a parameter.</p>
1385<p>The anti-aliased rasterizer produces coverage values from 0 to 255, this is, from completely transparent to completely opaque.</p>
1386<hr>
1387
1388<h2 id="ft_spanfunc">FT_SpanFunc<a class="headerlink" href="#ft_spanfunc" title="Permanent link">&para;</a></h2>
1389<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1390<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1391  (*<b>FT_SpanFunc</b>)( <span class="keyword">int</span>             y,
1392                  <span class="keyword">int</span>             count,
1393                  <span class="keyword">const</span> <a href="ft2-raster.html#ft_span">FT_Span</a>*  spans,
1394                  <span class="keyword">void</span>*           user );
1395
1396#<span class="keyword">define</span> FT_Raster_Span_Func  <b>FT_SpanFunc</b>
1397</code></pre></div>
1398
1399<p>A function used as a call-back by the anti-aliased renderer in order to let client applications draw themselves the pixel spans on each scan line.</p>
1400<h4>input</h4>
1401<table class="fields">
1402<tr><td class="val" id="y">y</td><td class="desc">
1403<p>The scanline's upward y&nbsp;coordinate.</p>
1404</td></tr>
1405<tr><td class="val" id="count">count</td><td class="desc">
1406<p>The number of spans to draw on this scanline.</p>
1407</td></tr>
1408<tr><td class="val" id="spans">spans</td><td class="desc">
1409<p>A table of <code>count</code> spans to draw on the scanline.</p>
1410</td></tr>
1411<tr><td class="val" id="user">user</td><td class="desc">
1412<p>User-supplied data that is passed to the callback.</p>
1413</td></tr>
1414</table>
1415
1416<h4>note</h4>
1417
1418<p>This callback allows client applications to directly render the spans of the anti-aliased bitmap to any kind of surfaces.</p>
1419<p>This can be used to write anti-aliased outlines directly to a given background bitmap using alpha compositing. It can also be used for oversampling and averaging.</p>
1420<hr>
1421
1422<h2 id="ft_raster_params">FT_Raster_Params<a class="headerlink" href="#ft_raster_params" title="Permanent link">&para;</a></h2>
1423<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1424<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Raster_Params_
1425  {
1426    <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_bitmap">FT_Bitmap</a>*        target;
1427    <span class="keyword">const</span> <span class="keyword">void</span>*             source;
1428    <span class="keyword">int</span>                     flags;
1429    <a href="ft2-raster.html#ft_spanfunc">FT_SpanFunc</a>             gray_spans;
1430    <a href="ft2-raster.html#ft_spanfunc">FT_SpanFunc</a>             black_spans;  /* unused */
1431    <a href="ft2-raster.html#ft_raster_bittest_func">FT_Raster_BitTest_Func</a>  bit_test;     /* unused */
1432    <a href="ft2-raster.html#ft_raster_bitset_func">FT_Raster_BitSet_Func</a>   bit_set;      /* unused */
1433    <span class="keyword">void</span>*                   user;
1434    <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a>                 clip_box;
1435
1436  } <b>FT_Raster_Params</b>;
1437</code></pre></div>
1438
1439<p>A structure to hold the parameters used by a raster's render function, passed as an argument to <code><a href="ft2-outline_processing.html#ft_outline_render">FT_Outline_Render</a></code>.</p>
1440<h4>fields</h4>
1441<table class="fields">
1442<tr><td class="val" id="target">target</td><td class="desc">
1443<p>The target bitmap.</p>
1444</td></tr>
1445<tr><td class="val" id="source">source</td><td class="desc">
1446<p>A pointer to the source glyph image (e.g., an <code><a href="ft2-outline_processing.html#ft_outline">FT_Outline</a></code>).</p>
1447</td></tr>
1448<tr><td class="val" id="flags">flags</td><td class="desc">
1449<p>The rendering flags.</p>
1450</td></tr>
1451<tr><td class="val" id="gray_spans">gray_spans</td><td class="desc">
1452<p>The gray span drawing callback.</p>
1453</td></tr>
1454<tr><td class="val" id="black_spans">black_spans</td><td class="desc">
1455<p>Unused.</p>
1456</td></tr>
1457<tr><td class="val" id="bit_test">bit_test</td><td class="desc">
1458<p>Unused.</p>
1459</td></tr>
1460<tr><td class="val" id="bit_set">bit_set</td><td class="desc">
1461<p>Unused.</p>
1462</td></tr>
1463<tr><td class="val" id="user">user</td><td class="desc">
1464<p>User-supplied data that is passed to each drawing callback.</p>
1465</td></tr>
1466<tr><td class="val" id="clip_box">clip_box</td><td class="desc">
1467<p>An optional span clipping box expressed in <em>integer</em> pixels (not in 26.6 fixed-point units).</p>
1468</td></tr>
1469</table>
1470
1471<h4>note</h4>
1472
1473<p>The <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_AA</a></code> bit flag must be set in the <code>flags</code> to generate an anti-aliased glyph bitmap, otherwise a monochrome bitmap is generated. The <code>target</code> should have appropriate pixel mode and its dimensions define the clipping region.</p>
1474<p>If both <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_AA</a></code> and <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_DIRECT</a></code> bit flags are set in <code>flags</code>, the raster calls an <code><a href="ft2-raster.html#ft_spanfunc">FT_SpanFunc</a></code> callback <code>gray_spans</code> with <code>user</code> data as an argument ignoring <code>target</code>. This allows direct composition over a pre-existing user surface to perform the span drawing and composition. To optionally clip the spans, set the <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_CLIP</a></code> flag and <code>clip_box</code>. The monochrome raster does not support the direct mode.</p>
1475<p>The gray-level rasterizer always uses 256 gray levels. If you want fewer gray levels, you have to use <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_DIRECT</a></code> and reduce the levels in the callback function.</p>
1476<hr>
1477
1478<h2 id="ft_raster_flag_xxx">FT_RASTER_FLAG_XXX<a class="headerlink" href="#ft_raster_flag_xxx" title="Permanent link">&para;</a></h2>
1479<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1480<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-raster.html#ft_raster_flag_default">FT_RASTER_FLAG_DEFAULT</a>  0x0
1481#<span class="keyword">define</span> <a href="ft2-raster.html#ft_raster_flag_aa">FT_RASTER_FLAG_AA</a>       0x1
1482#<span class="keyword">define</span> <a href="ft2-raster.html#ft_raster_flag_direct">FT_RASTER_FLAG_DIRECT</a>   0x2
1483#<span class="keyword">define</span> <a href="ft2-raster.html#ft_raster_flag_clip">FT_RASTER_FLAG_CLIP</a>     0x4
1484#<span class="keyword">define</span> <a href="ft2-raster.html#ft_raster_flag_sdf">FT_RASTER_FLAG_SDF</a>      0x8
1485
1486  /* these constants are deprecated; use the corresponding */
1487  /* `<b>FT_RASTER_FLAG_XXX</b>` values instead                   */
1488#<span class="keyword">define</span> ft_raster_flag_default  <a href="ft2-raster.html#ft_raster_flag_default">FT_RASTER_FLAG_DEFAULT</a>
1489#<span class="keyword">define</span> ft_raster_flag_aa       <a href="ft2-raster.html#ft_raster_flag_aa">FT_RASTER_FLAG_AA</a>
1490#<span class="keyword">define</span> ft_raster_flag_direct   <a href="ft2-raster.html#ft_raster_flag_direct">FT_RASTER_FLAG_DIRECT</a>
1491#<span class="keyword">define</span> ft_raster_flag_clip     <a href="ft2-raster.html#ft_raster_flag_clip">FT_RASTER_FLAG_CLIP</a>
1492</code></pre></div>
1493
1494<p>A list of bit flag constants as used in the <code>flags</code> field of a <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> structure.</p>
1495<h4>values</h4>
1496<table class="fields">
1497<tr><td class="val" id="ft_raster_flag_default">FT_RASTER_FLAG_DEFAULT</td><td class="desc">
1498<p>This value is 0.</p>
1499</td></tr>
1500<tr><td class="val" id="ft_raster_flag_aa">FT_RASTER_FLAG_AA</td><td class="desc">
1501<p>This flag is set to indicate that an anti-aliased glyph image should be generated. Otherwise, it will be monochrome (1-bit).</p>
1502</td></tr>
1503<tr><td class="val" id="ft_raster_flag_direct">FT_RASTER_FLAG_DIRECT</td><td class="desc">
1504<p>This flag is set to indicate direct rendering. In this mode, client applications must provide their own span callback. This lets them directly draw or compose over an existing bitmap. If this bit is <em>not</em> set, the target pixmap's buffer <em>must</em> be zeroed before rendering and the output will be clipped to its size.</p>
1505<p>Direct rendering is only possible with anti-aliased glyphs.</p>
1506</td></tr>
1507<tr><td class="val" id="ft_raster_flag_clip">FT_RASTER_FLAG_CLIP</td><td class="desc">
1508<p>This flag is only used in direct rendering mode. If set, the output will be clipped to a box specified in the <code>clip_box</code> field of the <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> structure. Otherwise, the <code>clip_box</code> is effectively set to the bounding box and all spans are generated.</p>
1509</td></tr>
1510<tr><td class="val" id="ft_raster_flag_sdf">FT_RASTER_FLAG_SDF</td><td class="desc">
1511<p>This flag is set to indicate that a signed distance field glyph image should be generated. This is only used while rendering with the <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_SDF</a></code> render mode.</p>
1512</td></tr>
1513</table>
1514
1515<hr>
1516
1517<h2 id="ft_raster">FT_Raster<a class="headerlink" href="#ft_raster" title="Permanent link">&para;</a></h2>
1518<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1519<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_RasterRec_*  <b>FT_Raster</b>;
1520</code></pre></div>
1521
1522<p>An opaque handle (pointer) to a raster object. Each object can be used independently to convert an outline into a bitmap or pixmap.</p>
1523<h4>note</h4>
1524
1525<p>In FreeType 2, all rasters are now encapsulated within specific <code><a href="ft2-module_management.html#ft_renderer">FT_Renderer</a></code> modules and only used in their context.</p>
1526<hr>
1527
1528<h2 id="ft_raster_newfunc">FT_Raster_NewFunc<a class="headerlink" href="#ft_raster_newfunc" title="Permanent link">&para;</a></h2>
1529<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1530<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1531  (*<b>FT_Raster_NewFunc</b>)( <span class="keyword">void</span>*       memory,
1532                        <a href="ft2-raster.html#ft_raster">FT_Raster</a>*  raster );
1533
1534#<span class="keyword">define</span> FT_Raster_New_Func  <b>FT_Raster_NewFunc</b>
1535</code></pre></div>
1536
1537<p>A function used to create a new raster object.</p>
1538<h4>input</h4>
1539<table class="fields">
1540<tr><td class="val" id="memory">memory</td><td class="desc">
1541<p>A handle to the memory allocator.</p>
1542</td></tr>
1543</table>
1544
1545<h4>output</h4>
1546<table class="fields">
1547<tr><td class="val" id="raster">raster</td><td class="desc">
1548<p>A handle to the new raster object.</p>
1549</td></tr>
1550</table>
1551
1552<h4>return</h4>
1553
1554<p>Error code. 0&nbsp;means success.</p>
1555<h4>note</h4>
1556
1557<p>The <code>memory</code> parameter is a typeless pointer in order to avoid un-wanted dependencies on the rest of the FreeType code. In practice, it is an <code><a href="ft2-system_interface.html#ft_memory">FT_Memory</a></code> object, i.e., a handle to the standard FreeType memory allocator. However, this field can be completely ignored by a given raster implementation.</p>
1558<hr>
1559
1560<h2 id="ft_raster_donefunc">FT_Raster_DoneFunc<a class="headerlink" href="#ft_raster_donefunc" title="Permanent link">&para;</a></h2>
1561<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1562<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1563  (*<b>FT_Raster_DoneFunc</b>)( <a href="ft2-raster.html#ft_raster">FT_Raster</a>  raster );
1564
1565#<span class="keyword">define</span> FT_Raster_Done_Func  <b>FT_Raster_DoneFunc</b>
1566</code></pre></div>
1567
1568<p>A function used to destroy a given raster object.</p>
1569<h4>input</h4>
1570<table class="fields">
1571<tr><td class="val" id="raster">raster</td><td class="desc">
1572<p>A handle to the raster object.</p>
1573</td></tr>
1574</table>
1575
1576<hr>
1577
1578<h2 id="ft_raster_resetfunc">FT_Raster_ResetFunc<a class="headerlink" href="#ft_raster_resetfunc" title="Permanent link">&para;</a></h2>
1579<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1580<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1581  (*<b>FT_Raster_ResetFunc</b>)( <a href="ft2-raster.html#ft_raster">FT_Raster</a>       raster,
1582                          <span class="keyword">unsigned</span> <span class="keyword">char</span>*  pool_base,
1583                          <span class="keyword">unsigned</span> <span class="keyword">long</span>   pool_size );
1584
1585#<span class="keyword">define</span> FT_Raster_Reset_Func  <b>FT_Raster_ResetFunc</b>
1586</code></pre></div>
1587
1588<p>FreeType used to provide an area of memory called the &lsquo;render pool&rsquo; available to all registered rasterizers. This was not thread safe, however, and now FreeType never allocates this pool.</p>
1589<p>This function is called after a new raster object is created.</p>
1590<h4>input</h4>
1591<table class="fields">
1592<tr><td class="val" id="raster">raster</td><td class="desc">
1593<p>A handle to the new raster object.</p>
1594</td></tr>
1595<tr><td class="val" id="pool_base">pool_base</td><td class="desc">
1596<p>Previously, the address in memory of the render pool. Set this to <code>NULL</code>.</p>
1597</td></tr>
1598<tr><td class="val" id="pool_size">pool_size</td><td class="desc">
1599<p>Previously, the size in bytes of the render pool. Set this to 0.</p>
1600</td></tr>
1601</table>
1602
1603<h4>note</h4>
1604
1605<p>Rasterizers should rely on dynamic or stack allocation if they want to (a handle to the memory allocator is passed to the rasterizer constructor).</p>
1606<hr>
1607
1608<h2 id="ft_raster_setmodefunc">FT_Raster_SetModeFunc<a class="headerlink" href="#ft_raster_setmodefunc" title="Permanent link">&para;</a></h2>
1609<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1610<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1611  (*<b>FT_Raster_SetModeFunc</b>)( <a href="ft2-raster.html#ft_raster">FT_Raster</a>      raster,
1612                            <span class="keyword">unsigned</span> <span class="keyword">long</span>  mode,
1613                            <span class="keyword">void</span>*          args );
1614
1615#<span class="keyword">define</span> FT_Raster_Set_Mode_Func  <b>FT_Raster_SetModeFunc</b>
1616</code></pre></div>
1617
1618<p>This function is a generic facility to change modes or attributes in a given raster. This can be used for debugging purposes, or simply to allow implementation-specific &lsquo;features&rsquo; in a given raster module.</p>
1619<h4>input</h4>
1620<table class="fields">
1621<tr><td class="val" id="raster">raster</td><td class="desc">
1622<p>A handle to the new raster object.</p>
1623</td></tr>
1624<tr><td class="val" id="mode">mode</td><td class="desc">
1625<p>A 4-byte tag used to name the mode or property.</p>
1626</td></tr>
1627<tr><td class="val" id="args">args</td><td class="desc">
1628<p>A pointer to the new mode/property to use.</p>
1629</td></tr>
1630</table>
1631
1632<hr>
1633
1634<h2 id="ft_raster_renderfunc">FT_Raster_RenderFunc<a class="headerlink" href="#ft_raster_renderfunc" title="Permanent link">&para;</a></h2>
1635<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1636<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1637  (*<b>FT_Raster_RenderFunc</b>)( <a href="ft2-raster.html#ft_raster">FT_Raster</a>                raster,
1638                           <span class="keyword">const</span> <a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a>*  params );
1639
1640#<span class="keyword">define</span> FT_Raster_Render_Func  <b>FT_Raster_RenderFunc</b>
1641</code></pre></div>
1642
1643<p>Invoke a given raster to scan-convert a given glyph image into a target bitmap.</p>
1644<h4>input</h4>
1645<table class="fields">
1646<tr><td class="val" id="raster">raster</td><td class="desc">
1647<p>A handle to the raster object.</p>
1648</td></tr>
1649<tr><td class="val" id="params">params</td><td class="desc">
1650<p>A pointer to an <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> structure used to store the rendering parameters.</p>
1651</td></tr>
1652</table>
1653
1654<h4>return</h4>
1655
1656<p>Error code. 0&nbsp;means success.</p>
1657<h4>note</h4>
1658
1659<p>The exact format of the source image depends on the raster's glyph format defined in its <code><a href="ft2-raster.html#ft_raster_funcs">FT_Raster_Funcs</a></code> structure. It can be an <code><a href="ft2-outline_processing.html#ft_outline">FT_Outline</a></code> or anything else in order to support a large array of glyph formats.</p>
1660<p>Note also that the render function can fail and return a <code>FT_Err_Unimplemented_Feature</code> error code if the raster used does not support direct composition.</p>
1661<hr>
1662
1663<h2 id="ft_raster_funcs">FT_Raster_Funcs<a class="headerlink" href="#ft_raster_funcs" title="Permanent link">&para;</a></h2>
1664<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1665<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Raster_Funcs_
1666  {
1667    <a href="ft2-basic_types.html#ft_glyph_format">FT_Glyph_Format</a>        glyph_format;
1668
1669    <a href="ft2-raster.html#ft_raster_newfunc">FT_Raster_NewFunc</a>      raster_new;
1670    <a href="ft2-raster.html#ft_raster_resetfunc">FT_Raster_ResetFunc</a>    raster_reset;
1671    <a href="ft2-raster.html#ft_raster_setmodefunc">FT_Raster_SetModeFunc</a>  raster_set_mode;
1672    <a href="ft2-raster.html#ft_raster_renderfunc">FT_Raster_RenderFunc</a>   raster_render;
1673    <a href="ft2-raster.html#ft_raster_donefunc">FT_Raster_DoneFunc</a>     raster_done;
1674
1675  } <b>FT_Raster_Funcs</b>;
1676</code></pre></div>
1677
1678<p>A structure used to describe a given raster class to the library.</p>
1679<h4>fields</h4>
1680<table class="fields">
1681<tr><td class="val" id="glyph_format">glyph_format</td><td class="desc">
1682<p>The supported glyph format for this raster.</p>
1683</td></tr>
1684<tr><td class="val" id="raster_new">raster_new</td><td class="desc">
1685<p>The raster constructor.</p>
1686</td></tr>
1687<tr><td class="val" id="raster_reset">raster_reset</td><td class="desc">
1688<p>Used to reset the render pool within the raster.</p>
1689</td></tr>
1690<tr><td class="val" id="raster_render">raster_render</td><td class="desc">
1691<p>A function to render a glyph into a given bitmap.</p>
1692</td></tr>
1693<tr><td class="val" id="raster_done">raster_done</td><td class="desc">
1694<p>The raster destructor.</p>
1695</td></tr>
1696</table>
1697
1698<hr>
1699
1700<h2 id="ft_raster_bittest_func">FT_Raster_BitTest_Func<a class="headerlink" href="#ft_raster_bittest_func" title="Permanent link">&para;</a></h2>
1701<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1702<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1703  (*<b>FT_Raster_BitTest_Func</b>)( <span class="keyword">int</span>    y,
1704                             <span class="keyword">int</span>    x,
1705                             <span class="keyword">void</span>*  user );
1706</code></pre></div>
1707
1708<p>Deprecated, unimplemented.</p>
1709<hr>
1710
1711<h2 id="ft_raster_bitset_func">FT_Raster_BitSet_Func<a class="headerlink" href="#ft_raster_bitset_func" title="Permanent link">&para;</a></h2>
1712<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1713<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1714  (*<b>FT_Raster_BitSet_Func</b>)( <span class="keyword">int</span>    y,
1715                            <span class="keyword">int</span>    x,
1716                            <span class="keyword">void</span>*  user );
1717</code></pre></div>
1718
1719<p>Deprecated, unimplemented.</p>
1720<hr>
1721
1722
1723
1724
1725
1726
1727
1728            </article>
1729          </div>
1730        </div>
1731
1732      </main>
1733
1734
1735<footer class="md-footer">
1736
1737    <nav class="md-footer__inner md-grid" aria-label="Footer">
1738
1739
1740        <a href="ft2-bitmap_handling.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Bitmap Handling" rel="prev">
1741          <div class="md-footer__button md-icon">
1742            <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>
1743          </div>
1744          <div class="md-footer__title">
1745            <div class="md-ellipsis">
1746              <span class="md-footer__direction">
1747                Previous
1748              </span>
1749              Bitmap Handling
1750            </div>
1751          </div>
1752        </a>
1753
1754
1755
1756        <a href="ft2-glyph_stroker.html" class="md-footer__link md-footer__link--next" aria-label="Next: Glyph Stroker" rel="next">
1757          <div class="md-footer__title">
1758            <div class="md-ellipsis">
1759              <span class="md-footer__direction">
1760                Next
1761              </span>
1762              Glyph Stroker
1763            </div>
1764          </div>
1765          <div class="md-footer__button md-icon">
1766            <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>
1767          </div>
1768        </a>
1769
1770    </nav>
1771
1772  <div class="md-footer-meta md-typeset">
1773    <div class="md-footer-meta__inner md-grid">
1774      <div class="md-footer-copyright">
1775
1776          <div class="md-footer-copyright__highlight">
1777            Copyright 2022 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1778          </div>
1779
1780        Made with
1781        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1782          Material for MkDocs
1783        </a>
1784
1785      </div>
1786
1787    </div>
1788  </div>
1789</footer>
1790
1791    </div>
1792    <div class="md-dialog" data-md-component="dialog">
1793      <div class="md-dialog__inner md-typeset"></div>
1794    </div>
1795    <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>
1796
1797
1798      <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
1799
1800        <script src="javascripts/extra.js"></script>
1801
1802
1803  </body>
1804</html>