Sign in Join
Wiki copytemporary

TBGRACustomBitmap and IBGRAScanner: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: TBGRACustomBitmap and IBGRAScanner

OldNewLine
1+Back to [[BGRABitmap]].
2+
3+This class and this interface are included in *BGRABitmapTypes*.
4+
5+For methods (procedure and functions), see [[TBGRABitmap class]].
6+
7+### TBGRACustomBitmap and IBGRAScanner
8+
9+#### IBGRAScanner
10+
11+<table style="border-collapse: collapse; width: 100%">
12+
13+<tr style="background: white;">
14+
15+<td colspan="3">
16+
17+*IBGRAScanner* = **interface**
18+
19+</td>
20+
21+</tr>
22+
23+<tr style="background: white;">
24+
25+<td width="10%">
26+
27+</td>
28+
29+<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
30+
31+Interface for a scanner. A scanner is like an image, but its content has no limit and it can be calculated on the fly. It is like a infinite readonly image.\
32+\
33+Note: it must not implement reference counting even if it is an interface\
34+\
35+*TBGRACustomBitmap* implements this interface and the content is repeated horizontally and vertically. There are also various classes in *BGRAGradientScanner* unit that generate gradients on the fly and in *BGRATransform* unit that provide geometrical transformations of images
36+
37+</td>
38+
39+</tr>
40+
41+<tr style="height: 8px;">
42+
43+<td colspan="3">
44+
45+</td>
46+
47+</tr>
48+
49+<tr>
50+
51+<td width="10%">
52+
53+</td>
54+
55+<td colspan="2" style="background: #f0f0ff;">
56+
57+**procedure** ScanMoveTo(X,Y: Integer);
58+
59+</td>
60+
61+</tr>
62+
63+<tr>
64+
65+<td width="10%">
66+
67+</td>
68+
69+<td width="10%" style="background: #f0f0ff;">
70+
71+</td>
72+
73+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
74+
75+Move to the position (*X*,*Y*) for the next call to *ScanNextPixel*
76+
77+</td>
78+
79+</tr>
80+
81+<tr style="height: 8px;">
82+
83+<td colspan="3">
84+
85+</td>
86+
87+</tr>
88+
89+<tr>
90+
91+<td width="10%">
92+
93+</td>
94+
95+<td colspan="2" style="background: white;">
96+
97+**function** ScanNextPixel: TBGRAPixel;
98+
99+</td>
100+
101+</tr>
102+
103+<tr>
104+
105+<td width="10%">
106+
107+</td>
108+
109+<td width="10%" style="background: white;">
110+
111+</td>
112+
113+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
114+
115+Scan the pixel at the current location and increments *X*
116+
117+</td>
118+
119+</tr>
120+
121+<tr style="height: 8px;">
122+
123+<td colspan="3">
124+
125+</td>
126+
127+</tr>
128+
129+<tr>
130+
131+<td width="10%">
132+
133+</td>
134+
135+<td colspan="2" style="background: #f0f0ff;">
136+
137+**function** ScanAt(X,Y: Single): TBGRAPixel;
138+
139+</td>
140+
141+</tr>
142+
143+<tr>
144+
145+<td width="10%">
146+
147+</td>
148+
149+<td width="10%" style="background: #f0f0ff;">
150+
151+</td>
152+
153+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
154+
155+Scan at any location using floating point coordinates
156+
157+</td>
158+
159+</tr>
160+
161+<tr style="height: 8px;">
162+
163+<td colspan="3">
164+
165+</td>
166+
167+</tr>
168+
169+<tr>
170+
171+<td width="10%">
172+
173+</td>
174+
175+<td colspan="2" style="background: white;">
176+
177+**function** ScanAtInteger(X,Y: integer): TBGRAPixel;
178+
179+</td>
180+
181+</tr>
182+
183+<tr>
184+
185+<td width="10%">
186+
187+</td>
188+
189+<td width="10%" style="background: white;">
190+
191+</td>
192+
193+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
194+
195+Scan at any location using integer coordinates
196+
197+</td>
198+
199+</tr>
200+
201+<tr style="height: 8px;">
202+
203+<td colspan="3">
204+
205+</td>
206+
207+</tr>
208+
209+<tr>
210+
211+<td width="10%">
212+
213+</td>
214+
215+<td colspan="2" style="background: #f0f0ff;">
216+
217+**procedure** ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode);
218+
219+</td>
220+
221+</tr>
222+
223+<tr>
224+
225+<td width="10%">
226+
227+</td>
228+
229+<td width="10%" style="background: #f0f0ff;">
230+
231+</td>
232+
233+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
234+
235+Copy a row of pixels from *X* to *X*+*count*-1 to a specified destination *pdest*. *mode* indicates how to combine with existing data
236+
237+</td>
238+
239+</tr>
240+
241+<tr style="height: 8px;">
242+
243+<td colspan="3">
244+
245+</td>
246+
247+</tr>
248+
249+<tr>
250+
251+<td width="10%">
252+
253+</td>
254+
255+<td colspan="2" style="background: white;">
256+
257+**function** IsScanPutPixelsDefined: boolean;
258+
259+</td>
260+
261+</tr>
262+
263+<tr>
264+
265+<td width="10%">
266+
267+</td>
268+
269+<td width="10%" style="background: white;">
270+
271+</td>
272+
273+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
274+
275+Returns True if the function *ScanPutPixels* is available. Otherwise you need to call *ScanNextPixel* and combine pixels for example with *SetPixel*
276+
277+</td>
278+
279+</tr>
280+
281+<tr style="height: 8px;">
282+
283+<td colspan="3">
284+
285+</td>
286+
287+</tr>
288+
289+<tr>
290+
291+<td width="10%">
292+
293+</td>
294+
295+<td colspan="2" style="background: #f0f0ff;">
296+
297+*TScanAtFunction* = **function** (X,Y: Single): TBGRAPixel **of** **object**;
298+
299+</td>
300+
301+</tr>
302+
303+<tr>
304+
305+<td width="10%">
306+
307+</td>
308+
309+<td width="10%" style="background: #f0f0ff;">
310+
311+</td>
312+
313+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
314+
315+A type of function of a scanner that returns the content at floating point coordinates
316+
317+</td>
318+
319+</tr>
320+
321+<tr style="height: 8px;">
322+
323+<td colspan="3">
324+
325+</td>
326+
327+</tr>
328+
329+<tr>
330+
331+<td width="10%">
332+
333+</td>
334+
335+<td colspan="2" style="background: white;">
336+
337+*TScanAtIntegerFunction* = **function** (X,Y: Integer): TBGRAPixel **of** **object**;
338+
339+</td>
340+
341+</tr>
342+
343+<tr>
344+
345+<td width="10%">
346+
347+</td>
348+
349+<td width="10%" style="background: white;">
350+
351+</td>
352+
353+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
354+
355+A type of function of a scanner that returns the content at integer coordinates
356+
357+</td>
358+
359+</tr>
360+
361+<tr style="height: 8px;">
362+
363+<td colspan="3">
364+
365+</td>
366+
367+</tr>
368+
369+<tr>
370+
371+<td width="10%">
372+
373+</td>
374+
375+<td colspan="2" style="background: #f0f0ff;">
376+
377+*TScanNextPixelFunction* = **function**: TBGRAPixel **of** **object**;
378+
379+</td>
380+
381+</tr>
382+
383+<tr>
384+
385+<td width="10%">
386+
387+</td>
388+
389+<td width="10%" style="background: #f0f0ff;">
390+
391+</td>
392+
393+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
394+
395+A type of function of a scanner that returns the next pixel
396+
397+</td>
398+
399+</tr>
400+
401+<tr style="height: 8px;">
402+
403+<td colspan="3">
404+
405+</td>
406+
407+</tr>
408+
409+<tr style="background: white;">
410+
411+<td colspan="3">
412+
413+*TBGRACustomScanner* = **class**(IBGRAScanner)
414+
415+</td>
416+
417+</tr>
418+
419+<tr style="background: white;">
420+
421+<td width="10%">
422+
423+</td>
424+
425+<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
426+
427+Base class for implementing *IBGRAScanner* interface
428+
429+</td>
430+
431+</tr>
432+
433+<tr style="height: 8px;">
434+
435+<td colspan="3">
436+
437+</td>
438+
439+</tr>
440+
441+</table>
442+
443+#### TBGRACustomBitmap
444+
445+<table style="border-collapse: collapse; width: 100%">
446+
447+<tr style="background: white;">
448+
449+<td colspan="3">
450+
451+*TBGRACustomBitmap* = **class**(TFPCustomImage,IBGRAScanner)
452+
453+</td>
454+
455+</tr>
456+
457+<tr style="background: white;">
458+
459+<td width="10%">
460+
461+</td>
462+
463+<td style="border: 1px solid #e0e0a0; background: #ffffe4;" colspan="2">
464+
465+This is the base class for *TBGRABitmap*. It is the direct parent of *TBGRADefaultBitmap* class, which is the parent of the diverse implementations. A bitmap can be used as a scanner using the interface *IBGRAScanner*
466+
467+</td>
468+
469+</tr>
470+
471+<tr style="height: 8px;">
472+
473+<td colspan="3">
474+
475+</td>
476+
477+</tr>
478+
479+<tr>
480+
481+<td width="10%">
482+
483+</td>
484+
485+<td colspan="2" style="background: #f0f0ff;">
486+
487+*Caption*: **string**;
488+
489+</td>
490+
491+</tr>
492+
493+<tr>
494+
495+<td width="10%">
496+
497+</td>
498+
499+<td width="10%" style="background: #f0f0ff;">
500+
501+</td>
502+
503+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
504+
505+User defined caption. It does not appear on the image
506+
507+</td>
508+
509+</tr>
510+
511+<tr style="height: 8px;">
512+
513+<td colspan="3">
514+
515+</td>
516+
517+</tr>
518+
519+<tr>
520+
521+<td width="10%">
522+
523+</td>
524+
525+<td colspan="2" style="background: white;">
526+
527+*FillMode*: TFillMode;
528+
529+</td>
530+
531+</tr>
532+
533+<tr>
534+
535+<td width="10%">
536+
537+</td>
538+
539+<td width="10%" style="background: white;">
540+
541+</td>
542+
543+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
544+
545+Method to use when filling polygons (winding or alternate). See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
546+
547+</td>
548+
549+</tr>
550+
551+<tr style="height: 8px;">
552+
553+<td colspan="3">
554+
555+</td>
556+
557+</tr>
558+
559+<tr>
560+
561+<td width="10%">
562+
563+</td>
564+
565+<td colspan="2" style="background: #f0f0ff;">
566+
567+*LinearAntialiasing*: boolean;
568+
569+</td>
570+
571+</tr>
572+
573+<tr>
574+
575+<td width="10%">
576+
577+</td>
578+
579+<td width="10%" style="background: #f0f0ff;">
580+
581+</td>
582+
583+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
584+
585+Specifies if linear antialiasing must be used when drawing antialiased shapes
586+
587+</td>
588+
589+</tr>
590+
591+<tr style="height: 8px;">
592+
593+<td colspan="3">
594+
595+</td>
596+
597+</tr>
598+
599+<tr>
600+
601+<td width="10%">
602+
603+</td>
604+
605+<td colspan="2" style="background: white;">
606+
607+*ResampleFilter* : TResampleFilter;
608+
609+</td>
610+
611+</tr>
612+
613+<tr>
614+
615+<td width="10%">
616+
617+</td>
618+
619+<td width="10%" style="background: white;">
620+
621+</td>
622+
623+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
624+
625+Resample filter is used when resizing the bitmap. See [[BGRABitmap Miscellaneous types|resampling types]]
626+
627+</td>
628+
629+</tr>
630+
631+<tr style="height: 8px;">
632+
633+<td colspan="3">
634+
635+</td>
636+
637+</tr>
638+
639+<tr>
640+
641+<td width="10%">
642+
643+</td>
644+
645+<td colspan="2" style="background: #f0f0ff;">
646+
647+*ScanInterpolationFilter*: TResampleFilter;
648+
649+</td>
650+
651+</tr>
652+
653+<tr>
654+
655+<td width="10%">
656+
657+</td>
658+
659+<td width="10%" style="background: #f0f0ff;">
660+
661+</td>
662+
663+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
664+
665+Scan interpolation filter is used when the bitmap is used as a scanner (interface *IBGRAScanner*)
666+
667+</td>
668+
669+</tr>
670+
671+<tr style="height: 8px;">
672+
673+<td colspan="3">
674+
675+</td>
676+
677+</tr>
678+
679+<tr>
680+
681+<td width="10%">
682+
683+</td>
684+
685+<td colspan="2" style="background: white;">
686+
687+*ScanOffset*: TPoint;
688+
689+</td>
690+
691+</tr>
692+
693+<tr>
694+
695+<td width="10%">
696+
697+</td>
698+
699+<td width="10%" style="background: white;">
700+
701+</td>
702+
703+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
704+
705+Offset to apply when the image is scanned using *IBGRAScanner* interface
706+
707+</td>
708+
709+</tr>
710+
711+<tr style="height: 8px;">
712+
713+<td colspan="3">
714+
715+</td>
716+
717+</tr>
718+
719+<tr>
720+
721+<td width="10%">
722+
723+</td>
724+
725+<td colspan="2" style="background: #f0f0ff;">
726+
727+**property** Width: integer **read**;
728+
729+</td>
730+
731+</tr>
732+
733+<tr>
734+
735+<td width="10%">
736+
737+</td>
738+
739+<td width="10%" style="background: #f0f0ff;">
740+
741+</td>
742+
743+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
744+
745+Width of the image in pixels
746+
747+</td>
748+
749+</tr>
750+
751+<tr style="height: 8px;">
752+
753+<td colspan="3">
754+
755+</td>
756+
757+</tr>
758+
759+<tr>
760+
761+<td width="10%">
762+
763+</td>
764+
765+<td colspan="2" style="background: white;">
766+
767+**property** Height: integer **read**;
768+
769+</td>
770+
771+</tr>
772+
773+<tr>
774+
775+<td width="10%">
776+
777+</td>
778+
779+<td width="10%" style="background: white;">
780+
781+</td>
782+
783+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
784+
785+Height of the image in pixels
786+
787+</td>
788+
789+</tr>
790+
791+<tr style="height: 8px;">
792+
793+<td colspan="3">
794+
795+</td>
796+
797+</tr>
798+
799+<tr>
800+
801+<td width="10%">
802+
803+</td>
804+
805+<td colspan="2" style="background: #f0f0ff;">
806+
807+**property** ClipRect: TRect **read** **write**;
808+
809+</td>
810+
811+</tr>
812+
813+<tr>
814+
815+<td width="10%">
816+
817+</td>
818+
819+<td width="10%" style="background: #f0f0ff;">
820+
821+</td>
822+
823+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
824+
825+Clipping rectangle for all drawing functions
826+
827+</td>
828+
829+</tr>
830+
831+<tr style="height: 8px;">
832+
833+<td colspan="3">
834+
835+</td>
836+
837+</tr>
838+
839+<tr>
840+
841+<td width="10%">
842+
843+</td>
844+
845+<td colspan="2" style="background: white;">
846+
847+**property** NbPixels: integer **read**;
848+
849+</td>
850+
851+</tr>
852+
853+<tr>
854+
855+<td width="10%">
856+
857+</td>
858+
859+<td width="10%" style="background: white;">
860+
861+</td>
862+
863+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
864+
865+Total number of pixels. It is always true that *NbPixels* = *Width* * *Height*
866+
867+</td>
868+
869+</tr>
870+
871+<tr style="height: 8px;">
872+
873+<td colspan="3">
874+
875+</td>
876+
877+</tr>
878+
879+<tr>
880+
881+<td width="10%">
882+
883+</td>
884+
885+<td colspan="2" style="background: #f0f0ff;">
886+
887+**property** ScanLine\[y: integer\]: PBGRAPixel **read**;
888+
889+</td>
890+
891+</tr>
892+
893+<tr>
894+
895+<td width="10%">
896+
897+</td>
898+
899+<td width="10%" style="background: #f0f0ff;">
900+
901+</td>
902+
903+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
904+
905+Returns the address of the left-most pixel of any line. The parameter y ranges from 0 to Height-1
906+
907+</td>
908+
909+</tr>
910+
911+<tr style="height: 8px;">
912+
913+<td colspan="3">
914+
915+</td>
916+
917+</tr>
918+
919+<tr>
920+
921+<td width="10%">
922+
923+</td>
924+
925+<td colspan="2" style="background: white;">
926+
927+**property** LineOrder: TRawImageLineOrder **read**;
928+
929+</td>
930+
931+</tr>
932+
933+<tr>
934+
935+<td width="10%">
936+
937+</td>
938+
939+<td width="10%" style="background: white;">
940+
941+</td>
942+
943+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
944+
945+Indicates the order in which lines are stored in memory. If it is equal to *riloTopToBottom*, the first line is the top line. If it is equal to *riloBottomToTop*, the first line is the bottom line. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
946+
947+</td>
948+
949+</tr>
950+
951+<tr style="height: 8px;">
952+
953+<td colspan="3">
954+
955+</td>
956+
957+</tr>
958+
959+<tr>
960+
961+<td width="10%">
962+
963+</td>
964+
965+<td colspan="2" style="background: #f0f0ff;">
966+
967+**property** Data: PBGRAPixel **read**;
968+
969+</td>
970+
971+</tr>
972+
973+<tr>
974+
975+<td width="10%">
976+
977+</td>
978+
979+<td width="10%" style="background: #f0f0ff;">
980+
981+</td>
982+
983+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
984+
985+Provides a pointer to the first pixel in memory. Depending on the *LineOrder* property, this can be the top-left pixel or the bottom-left pixel. There is no padding between scanlines, so the start of the next line is at the address *Data* + *Width*. See [[BGRABitmap tutorial 4]]
986+
987+</td>
988+
989+</tr>
990+
991+<tr style="height: 8px;">
992+
993+<td colspan="3">
994+
995+</td>
996+
997+</tr>
998+
999+<tr>
1000+
1001+<td width="10%">
1002+
1003+</td>
1004+
1005+<td colspan="2" style="background: white;">
1006+
1007+**property** RefCount: integer **read**;
1008+
1009+</td>
1010+
1011+</tr>
1012+
1013+<tr>
1014+
1015+<td width="10%">
1016+
1017+</td>
1018+
1019+<td width="10%" style="background: white;">
1020+
1021+</td>
1022+
1023+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1024+
1025+Number of references to this image. It is increased by the function *NewReference* and decreased by the function *FreeReference*
1026+
1027+</td>
1028+
1029+</tr>
1030+
1031+<tr style="height: 8px;">
1032+
1033+<td colspan="3">
1034+
1035+</td>
1036+
1037+</tr>
1038+
1039+<tr>
1040+
1041+<td width="10%">
1042+
1043+</td>
1044+
1045+<td colspan="2" style="background: #f0f0ff;">
1046+
1047+**property** Empty: boolean **read**;
1048+
1049+</td>
1050+
1051+</tr>
1052+
1053+<tr>
1054+
1055+<td width="10%">
1056+
1057+</td>
1058+
1059+<td width="10%" style="background: #f0f0ff;">
1060+
1061+</td>
1062+
1063+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1064+
1065+Returns True if the bitmap only contains transparent pixels or has a size of zero
1066+
1067+</td>
1068+
1069+</tr>
1070+
1071+<tr style="height: 8px;">
1072+
1073+<td colspan="3">
1074+
1075+</td>
1076+
1077+</tr>
1078+
1079+<tr>
1080+
1081+<td width="10%">
1082+
1083+</td>
1084+
1085+<td colspan="2" style="background: white;">
1086+
1087+**property** HasTransparentPixels: boolean **read**;
1088+
1089+</td>
1090+
1091+</tr>
1092+
1093+<tr>
1094+
1095+<td width="10%">
1096+
1097+</td>
1098+
1099+<td width="10%" style="background: white;">
1100+
1101+</td>
1102+
1103+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1104+
1105+Returns True if there are transparent or semitransparent pixels, and so if the image would be stored with an alpha channel
1106+
1107+</td>
1108+
1109+</tr>
1110+
1111+<tr style="height: 8px;">
1112+
1113+<td colspan="3">
1114+
1115+</td>
1116+
1117+</tr>
1118+
1119+<tr>
1120+
1121+<td width="10%">
1122+
1123+</td>
1124+
1125+<td colspan="2" style="background: #f0f0ff;">
1126+
1127+**property** AverageColor: TColor **read**;
1128+
1129+</td>
1130+
1131+</tr>
1132+
1133+<tr>
1134+
1135+<td width="10%">
1136+
1137+</td>
1138+
1139+<td width="10%" style="background: #f0f0ff;">
1140+
1141+</td>
1142+
1143+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1144+
1145+Average color of the image
1146+
1147+</td>
1148+
1149+</tr>
1150+
1151+<tr style="height: 8px;">
1152+
1153+<td colspan="3">
1154+
1155+</td>
1156+
1157+</tr>
1158+
1159+<tr>
1160+
1161+<td width="10%">
1162+
1163+</td>
1164+
1165+<td colspan="2" style="background: white;">
1166+
1167+**property** AveragePixel: TBGRAPixel **read**;
1168+
1169+</td>
1170+
1171+</tr>
1172+
1173+<tr>
1174+
1175+<td width="10%">
1176+
1177+</td>
1178+
1179+<td width="10%" style="background: white;">
1180+
1181+</td>
1182+
1183+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1184+
1185+Average color (including alpha) of the image
1186+
1187+</td>
1188+
1189+</tr>
1190+
1191+<tr style="height: 8px;">
1192+
1193+<td colspan="3">
1194+
1195+</td>
1196+
1197+</tr>
1198+
1199+<tr>
1200+
1201+<td width="10%">
1202+
1203+</td>
1204+
1205+<td colspan="2" style="background: #f0f0ff;">
1206+
1207+**property** CanvasFP: TFPImageCanvas **read**;
1208+
1209+</td>
1210+
1211+</tr>
1212+
1213+<tr>
1214+
1215+<td width="10%">
1216+
1217+</td>
1218+
1219+<td width="10%" style="background: #f0f0ff;">
1220+
1221+</td>
1222+
1223+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1224+
1225+Canvas compatible with FreePascal
1226+
1227+</td>
1228+
1229+</tr>
1230+
1231+<tr style="height: 8px;">
1232+
1233+<td colspan="3">
1234+
1235+</td>
1236+
1237+</tr>
1238+
1239+<tr>
1240+
1241+<td width="10%">
1242+
1243+</td>
1244+
1245+<td colspan="2" style="background: white;">
1246+
1247+**property** CanvasDrawModeFP: TDrawMode **read** **write**;
1248+
1249+</td>
1250+
1251+</tr>
1252+
1253+<tr>
1254+
1255+<td width="10%">
1256+
1257+</td>
1258+
1259+<td width="10%" style="background: white;">
1260+
1261+</td>
1262+
1263+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1264+
1265+Draw mode to used when image is access using FreePascal functions and *Colors* property
1266+
1267+</td>
1268+
1269+</tr>
1270+
1271+<tr style="height: 8px;">
1272+
1273+<td colspan="3">
1274+
1275+</td>
1276+
1277+</tr>
1278+
1279+<tr>
1280+
1281+<td width="10%">
1282+
1283+</td>
1284+
1285+<td colspan="2" style="background: #f0f0ff;">
1286+
1287+**property** Bitmap: TBitmap **read**;
1288+
1289+</td>
1290+
1291+</tr>
1292+
1293+<tr>
1294+
1295+<td width="10%">
1296+
1297+</td>
1298+
1299+<td width="10%" style="background: #f0f0ff;">
1300+
1301+</td>
1302+
1303+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1304+
1305+Bitmap in a format compatible with the current GUI. Don't forget to call *InvalidateBitmap* before using it if you changed something with direct pixel access (*Scanline* and *Data*)
1306+
1307+</td>
1308+
1309+</tr>
1310+
1311+<tr style="height: 8px;">
1312+
1313+<td colspan="3">
1314+
1315+</td>
1316+
1317+</tr>
1318+
1319+<tr>
1320+
1321+<td width="10%">
1322+
1323+</td>
1324+
1325+<td colspan="2" style="background: white;">
1326+
1327+**property** Canvas: TCanvas **read**;
1328+
1329+</td>
1330+
1331+</tr>
1332+
1333+<tr>
1334+
1335+<td width="10%">
1336+
1337+</td>
1338+
1339+<td width="10%" style="background: white;">
1340+
1341+</td>
1342+
1343+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1344+
1345+Canvas provided by the GUI
1346+
1347+</td>
1348+
1349+</tr>
1350+
1351+<tr style="height: 8px;">
1352+
1353+<td colspan="3">
1354+
1355+</td>
1356+
1357+</tr>
1358+
1359+<tr>
1360+
1361+<td width="10%">
1362+
1363+</td>
1364+
1365+<td colspan="2" style="background: #f0f0ff;">
1366+
1367+**property** CanvasOpacity: byte **read** **write**;
1368+
1369+</td>
1370+
1371+</tr>
1372+
1373+<tr>
1374+
1375+<td width="10%">
1376+
1377+</td>
1378+
1379+<td width="10%" style="background: #f0f0ff;">
1380+
1381+</td>
1382+
1383+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1384+
1385+Opacity to apply to changes made using GUI functions, provided *CanvasAlphaCorrection* is set to *True*
1386+
1387+</td>
1388+
1389+</tr>
1390+
1391+<tr style="height: 8px;">
1392+
1393+<td colspan="3">
1394+
1395+</td>
1396+
1397+</tr>
1398+
1399+<tr>
1400+
1401+<td width="10%">
1402+
1403+</td>
1404+
1405+<td colspan="2" style="background: white;">
1406+
1407+**property** CanvasAlphaCorrection: boolean **read** **write**;
1408+
1409+</td>
1410+
1411+</tr>
1412+
1413+<tr>
1414+
1415+<td width="10%">
1416+
1417+</td>
1418+
1419+<td width="10%" style="background: white;">
1420+
1421+</td>
1422+
1423+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1424+
1425+Specifies if the alpha values must be corrected after GUI access to the bitmap
1426+
1427+</td>
1428+
1429+</tr>
1430+
1431+<tr style="height: 8px;">
1432+
1433+<td colspan="3">
1434+
1435+</td>
1436+
1437+</tr>
1438+
1439+<tr>
1440+
1441+<td width="10%">
1442+
1443+</td>
1444+
1445+<td colspan="2" style="background: #f0f0ff;">
1446+
1447+*JoinStyle*: TPenJoinStyle;
1448+
1449+</td>
1450+
1451+</tr>
1452+
1453+<tr>
1454+
1455+<td width="10%">
1456+
1457+</td>
1458+
1459+<td width="10%" style="background: #f0f0ff;">
1460+
1461+</td>
1462+
1463+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1464+
1465+How to join segments. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
1466+
1467+</td>
1468+
1469+</tr>
1470+
1471+<tr style="height: 8px;">
1472+
1473+<td colspan="3">
1474+
1475+</td>
1476+
1477+</tr>
1478+
1479+<tr>
1480+
1481+<td width="10%">
1482+
1483+</td>
1484+
1485+<td colspan="2" style="background: white;">
1486+
1487+*JoinMiterLimit*: single;
1488+
1489+</td>
1490+
1491+</tr>
1492+
1493+<tr>
1494+
1495+<td width="10%">
1496+
1497+</td>
1498+
1499+<td width="10%" style="background: white;">
1500+
1501+</td>
1502+
1503+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1504+
1505+Limit for the extension of the segments when joining them with *pjsMiter* join style, expressed in multiples of the width of the pen
1506+
1507+</td>
1508+
1509+</tr>
1510+
1511+<tr style="height: 8px;">
1512+
1513+<td colspan="3">
1514+
1515+</td>
1516+
1517+</tr>
1518+
1519+<tr>
1520+
1521+<td width="10%">
1522+
1523+</td>
1524+
1525+<td colspan="2" style="background: #f0f0ff;">
1526+
1527+**property** PenStyle: TPenStyle **read** **write**;
1528+
1529+</td>
1530+
1531+</tr>
1532+
1533+<tr>
1534+
1535+<td width="10%">
1536+
1537+</td>
1538+
1539+<td width="10%" style="background: #f0f0ff;">
1540+
1541+</td>
1542+
1543+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1544+
1545+Pen style. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
1546+
1547+</td>
1548+
1549+</tr>
1550+
1551+<tr style="height: 8px;">
1552+
1553+<td colspan="3">
1554+
1555+</td>
1556+
1557+</tr>
1558+
1559+<tr>
1560+
1561+<td width="10%">
1562+
1563+</td>
1564+
1565+<td colspan="2" style="background: white;">
1566+
1567+**property** CustomPenStyle: TBGRAPenStyle **read** **write**;
1568+
1569+</td>
1570+
1571+</tr>
1572+
1573+<tr>
1574+
1575+<td width="10%">
1576+
1577+</td>
1578+
1579+<td width="10%" style="background: white;">
1580+
1581+</td>
1582+
1583+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1584+
1585+Custom pen style. See [[BGRABitmap Geometry types|geometric types]]
1586+
1587+</td>
1588+
1589+</tr>
1590+
1591+<tr style="height: 8px;">
1592+
1593+<td colspan="3">
1594+
1595+</td>
1596+
1597+</tr>
1598+
1599+<tr>
1600+
1601+<td width="10%">
1602+
1603+</td>
1604+
1605+<td colspan="2" style="background: #f0f0ff;">
1606+
1607+**property** LineCap: TPenEndCap **read** **write**;
1608+
1609+</td>
1610+
1611+</tr>
1612+
1613+<tr>
1614+
1615+<td width="10%">
1616+
1617+</td>
1618+
1619+<td width="10%" style="background: #f0f0ff;">
1620+
1621+</td>
1622+
1623+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1624+
1625+How to draw the ends of a line
1626+
1627+</td>
1628+
1629+</tr>
1630+
1631+<tr style="height: 8px;">
1632+
1633+<td colspan="3">
1634+
1635+</td>
1636+
1637+</tr>
1638+
1639+<tr>
1640+
1641+<td width="10%">
1642+
1643+</td>
1644+
1645+<td colspan="2" style="background: white;">
1646+
1647+**property** ArrowStartSize: TPointF **read** **write**;
1648+
1649+</td>
1650+
1651+</tr>
1652+
1653+<tr>
1654+
1655+<td width="10%">
1656+
1657+</td>
1658+
1659+<td width="10%" style="background: white;">
1660+
1661+</td>
1662+
1663+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1664+
1665+Size of arrows at the start of the line
1666+
1667+</td>
1668+
1669+</tr>
1670+
1671+<tr style="height: 8px;">
1672+
1673+<td colspan="3">
1674+
1675+</td>
1676+
1677+</tr>
1678+
1679+<tr>
1680+
1681+<td width="10%">
1682+
1683+</td>
1684+
1685+<td colspan="2" style="background: #f0f0ff;">
1686+
1687+**property** ArrowEndSize: TPointF **read** **write**;
1688+
1689+</td>
1690+
1691+</tr>
1692+
1693+<tr>
1694+
1695+<td width="10%">
1696+
1697+</td>
1698+
1699+<td width="10%" style="background: #f0f0ff;">
1700+
1701+</td>
1702+
1703+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1704+
1705+Size of arrows at the end of the line
1706+
1707+</td>
1708+
1709+</tr>
1710+
1711+<tr style="height: 8px;">
1712+
1713+<td colspan="3">
1714+
1715+</td>
1716+
1717+</tr>
1718+
1719+<tr>
1720+
1721+<td width="10%">
1722+
1723+</td>
1724+
1725+<td colspan="2" style="background: white;">
1726+
1727+**property** ArrowStartOffset: single **read** **write**;
1728+
1729+</td>
1730+
1731+</tr>
1732+
1733+<tr>
1734+
1735+<td width="10%">
1736+
1737+</td>
1738+
1739+<td width="10%" style="background: white;">
1740+
1741+</td>
1742+
1743+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1744+
1745+Offset of the arrow from the start of the line
1746+
1747+</td>
1748+
1749+</tr>
1750+
1751+<tr style="height: 8px;">
1752+
1753+<td colspan="3">
1754+
1755+</td>
1756+
1757+</tr>
1758+
1759+<tr>
1760+
1761+<td width="10%">
1762+
1763+</td>
1764+
1765+<td colspan="2" style="background: #f0f0ff;">
1766+
1767+**property** ArrowEndOffset: single **read** **write**;
1768+
1769+</td>
1770+
1771+</tr>
1772+
1773+<tr>
1774+
1775+<td width="10%">
1776+
1777+</td>
1778+
1779+<td width="10%" style="background: #f0f0ff;">
1780+
1781+</td>
1782+
1783+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1784+
1785+Offset of the arrow from the end of the line
1786+
1787+</td>
1788+
1789+</tr>
1790+
1791+<tr style="height: 8px;">
1792+
1793+<td colspan="3">
1794+
1795+</td>
1796+
1797+</tr>
1798+
1799+<tr>
1800+
1801+<td width="10%">
1802+
1803+</td>
1804+
1805+<td colspan="2" style="background: white;">
1806+
1807+**property** ArrowStartRepeat: integer **read** **write**;
1808+
1809+</td>
1810+
1811+</tr>
1812+
1813+<tr>
1814+
1815+<td width="10%">
1816+
1817+</td>
1818+
1819+<td width="10%" style="background: white;">
1820+
1821+</td>
1822+
1823+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1824+
1825+Number of times to repeat the starting arrow
1826+
1827+</td>
1828+
1829+</tr>
1830+
1831+<tr style="height: 8px;">
1832+
1833+<td colspan="3">
1834+
1835+</td>
1836+
1837+</tr>
1838+
1839+<tr>
1840+
1841+<td width="10%">
1842+
1843+</td>
1844+
1845+<td colspan="2" style="background: #f0f0ff;">
1846+
1847+**property** ArrowEndRepeat: integer **read** **write**;
1848+
1849+</td>
1850+
1851+</tr>
1852+
1853+<tr>
1854+
1855+<td width="10%">
1856+
1857+</td>
1858+
1859+<td width="10%" style="background: #f0f0ff;">
1860+
1861+</td>
1862+
1863+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1864+
1865+Number of times to repeat the ending arrow
1866+
1867+</td>
1868+
1869+</tr>
1870+
1871+<tr style="height: 8px;">
1872+
1873+<td colspan="3">
1874+
1875+</td>
1876+
1877+</tr>
1878+
1879+<tr>
1880+
1881+<td width="10%">
1882+
1883+</td>
1884+
1885+<td colspan="2" style="background: white;">
1886+
1887+*FontName*: **string**;
1888+
1889+</td>
1890+
1891+</tr>
1892+
1893+<tr>
1894+
1895+<td width="10%">
1896+
1897+</td>
1898+
1899+<td width="10%" style="background: white;">
1900+
1901+</td>
1902+
1903+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1904+
1905+Specifies the font to use. Unless the font renderer accept otherwise, the name is in human readable form, like 'Arial', 'Times New Roman', ...
1906+
1907+</td>
1908+
1909+</tr>
1910+
1911+<tr style="height: 8px;">
1912+
1913+<td colspan="3">
1914+
1915+</td>
1916+
1917+</tr>
1918+
1919+<tr>
1920+
1921+<td width="10%">
1922+
1923+</td>
1924+
1925+<td colspan="2" style="background: #f0f0ff;">
1926+
1927+*FontStyle*: TFontStyles;
1928+
1929+</td>
1930+
1931+</tr>
1932+
1933+<tr>
1934+
1935+<td width="10%">
1936+
1937+</td>
1938+
1939+<td width="10%" style="background: #f0f0ff;">
1940+
1941+</td>
1942+
1943+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1944+
1945+Specifies the set of styles to be applied to the font. These can be *fsBold*, *fsItalic*, *fsStrikeOut*, *fsUnderline*. So the value \[*fsBold*,*fsItalic*\] means that the font must be bold and italic. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
1946+
1947+</td>
1948+
1949+</tr>
1950+
1951+<tr style="height: 8px;">
1952+
1953+<td colspan="3">
1954+
1955+</td>
1956+
1957+</tr>
1958+
1959+<tr>
1960+
1961+<td width="10%">
1962+
1963+</td>
1964+
1965+<td colspan="2" style="background: white;">
1966+
1967+*FontQuality* : TBGRAFontQuality;
1968+
1969+</td>
1970+
1971+</tr>
1972+
1973+<tr>
1974+
1975+<td width="10%">
1976+
1977+</td>
1978+
1979+<td width="10%" style="background: white;">
1980+
1981+</td>
1982+
1983+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
1984+
1985+Specifies the quality of rendering. Default value is *fqSystem*. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
1986+
1987+</td>
1988+
1989+</tr>
1990+
1991+<tr style="height: 8px;">
1992+
1993+<td colspan="3">
1994+
1995+</td>
1996+
1997+</tr>
1998+
1999+<tr>
2000+
2001+<td width="10%">
2002+
2003+</td>
2004+
2005+<td colspan="2" style="background: #f0f0ff;">
2006+
2007+*FontOrientation*: integer;
2008+
2009+</td>
2010+
2011+</tr>
2012+
2013+<tr>
2014+
2015+<td width="10%">
2016+
2017+</td>
2018+
2019+<td width="10%" style="background: #f0f0ff;">
2020+
2021+</td>
2022+
2023+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2024+
2025+Specifies the rotation of the text, for functions that support text rotation. It is expressed in tenth of degrees, positive values going counter-clockwise.
2026+
2027+</td>
2028+
2029+</tr>
2030+
2031+<tr style="height: 8px;">
2032+
2033+<td colspan="3">
2034+
2035+</td>
2036+
2037+</tr>
2038+
2039+<tr>
2040+
2041+<td width="10%">
2042+
2043+</td>
2044+
2045+<td colspan="2" style="background: white;">
2046+
2047+*FontVerticalAnchor*: TFontVerticalAnchor;
2048+
2049+</td>
2050+
2051+</tr>
2052+
2053+<tr>
2054+
2055+<td width="10%">
2056+
2057+</td>
2058+
2059+<td width="10%" style="background: white;">
2060+
2061+</td>
2062+
2063+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2064+
2065+Specifies how the font is vertically aligned relative to the start coordinate. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
2066+
2067+</td>
2068+
2069+</tr>
2070+
2071+<tr style="height: 8px;">
2072+
2073+<td colspan="3">
2074+
2075+</td>
2076+
2077+</tr>
2078+
2079+<tr>
2080+
2081+<td width="10%">
2082+
2083+</td>
2084+
2085+<td colspan="2" style="background: #f0f0ff;">
2086+
2087+**property** FontHeight: integer **read** **write**;
2088+
2089+</td>
2090+
2091+</tr>
2092+
2093+<tr>
2094+
2095+<td width="10%">
2096+
2097+</td>
2098+
2099+<td width="10%" style="background: #f0f0ff;">
2100+
2101+</td>
2102+
2103+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2104+
2105+Specifies the height of the font in pixels without taking into account additional line spacing. A negative value means that it is the full height instead (see below)
2106+
2107+</td>
2108+
2109+</tr>
2110+
2111+<tr style="height: 8px;">
2112+
2113+<td colspan="3">
2114+
2115+</td>
2116+
2117+</tr>
2118+
2119+<tr>
2120+
2121+<td width="10%">
2122+
2123+</td>
2124+
2125+<td colspan="2" style="background: white;">
2126+
2127+**property** FontFullHeight: integer **read** **write**;
2128+
2129+</td>
2130+
2131+</tr>
2132+
2133+<tr>
2134+
2135+<td width="10%">
2136+
2137+</td>
2138+
2139+<td width="10%" style="background: white;">
2140+
2141+</td>
2142+
2143+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2144+
2145+Specifies the height of the font in pixels, taking into account the additional line spacing defined for the font
2146+
2147+</td>
2148+
2149+</tr>
2150+
2151+<tr style="height: 8px;">
2152+
2153+<td colspan="3">
2154+
2155+</td>
2156+
2157+</tr>
2158+
2159+<tr>
2160+
2161+<td width="10%">
2162+
2163+</td>
2164+
2165+<td colspan="2" style="background: #f0f0ff;">
2166+
2167+**property** FontAntialias: Boolean **read** **write**;
2168+
2169+</td>
2170+
2171+</tr>
2172+
2173+<tr>
2174+
2175+<td width="10%">
2176+
2177+</td>
2178+
2179+<td width="10%" style="background: #f0f0ff;">
2180+
2181+</td>
2182+
2183+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2184+
2185+Simplified property to specify the quality (see *FontQuality*)
2186+
2187+</td>
2188+
2189+</tr>
2190+
2191+<tr style="height: 8px;">
2192+
2193+<td colspan="3">
2194+
2195+</td>
2196+
2197+</tr>
2198+
2199+<tr>
2200+
2201+<td width="10%">
2202+
2203+</td>
2204+
2205+<td colspan="2" style="background: white;">
2206+
2207+**property** FontPixelMetric: TFontPixelMetric **read**;
2208+
2209+</td>
2210+
2211+</tr>
2212+
2213+<tr>
2214+
2215+<td width="10%">
2216+
2217+</td>
2218+
2219+<td width="10%" style="background: white;">
2220+
2221+</td>
2222+
2223+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2224+
2225+Returns measurement for the current font in pixels
2226+
2227+</td>
2228+
2229+</tr>
2230+
2231+<tr style="height: 8px;">
2232+
2233+<td colspan="3">
2234+
2235+</td>
2236+
2237+</tr>
2238+
2239+<tr>
2240+
2241+<td width="10%">
2242+
2243+</td>
2244+
2245+<td colspan="2" style="background: #f0f0ff;">
2246+
2247+**property** FontRenderer: TBGRACustomFontRenderer **read** **write**;
2248+
2249+</td>
2250+
2251+</tr>
2252+
2253+<tr>
2254+
2255+<td width="10%">
2256+
2257+</td>
2258+
2259+<td width="10%" style="background: #f0f0ff;">
2260+
2261+</td>
2262+
2263+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2264+
2265+Specifies the font renderer. When working with the LCL, by default it is an instance of *TLCLFontRenderer* of unit *BGRAText*. Other renderers are provided in *BGRATextFX* unit and *BGRAVectorize* unit. Additionally, *BGRAFreeType* provides a renderer independent from the LCL.\
2266+\
2267+Once you assign a renderer, it will automatically be freed when the bitmap is freed. The renderers may provide additional styling for the font, not accessible with the properties in this class\
2268+\
2269+See [[BGRABitmap tutorial Font rendering|font rendering]]
2270+
2271+</td>
2272+
2273+</tr>
2274+
2275+<tr style="height: 8px;">
2276+
2277+<td colspan="3">
2278+
2279+</td>
2280+
2281+</tr>
2282+
2283+</table>
2284+
2285+#### Load and save files
2286+
2287+<table style="border-collapse: collapse; width: 100%">
2288+
2289+<tr>
2290+
2291+<td width="10%">
2292+
2293+</td>
2294+
2295+<td colspan="2" style="background: white;">
2296+
2297+**procedure** LoadFromFile(**const** filename: **string**); **virtual**;
2298+
2299+</td>
2300+
2301+</tr>
2302+
2303+<tr>
2304+
2305+<td width="10%">
2306+
2307+</td>
2308+
2309+<td width="10%" style="background: white;">
2310+
2311+</td>
2312+
2313+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2314+
2315+Load image from a file. *filename* is an ANSI string
2316+
2317+</td>
2318+
2319+</tr>
2320+
2321+<tr style="height: 8px;">
2322+
2323+<td colspan="3">
2324+
2325+</td>
2326+
2327+</tr>
2328+
2329+<tr>
2330+
2331+<td width="10%">
2332+
2333+</td>
2334+
2335+<td colspan="2" style="background: #f0f0ff;">
2336+
2337+**procedure** LoadFromFile(**const** filename:**string**; Handler:TFPCustomImageReader); **virtual**;
2338+
2339+</td>
2340+
2341+</tr>
2342+
2343+<tr>
2344+
2345+<td width="10%">
2346+
2347+</td>
2348+
2349+<td width="10%" style="background: #f0f0ff;">
2350+
2351+</td>
2352+
2353+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2354+
2355+Load image from a file with the specified image reader. *filename* is an ANSI string
2356+
2357+</td>
2358+
2359+</tr>
2360+
2361+<tr style="height: 8px;">
2362+
2363+<td colspan="3">
2364+
2365+</td>
2366+
2367+</tr>
2368+
2369+<tr>
2370+
2371+<td width="10%">
2372+
2373+</td>
2374+
2375+<td colspan="2" style="background: white;">
2376+
2377+**procedure** LoadFromFileUTF8(**const** filenameUTF8: **string**); **virtual**;
2378+
2379+</td>
2380+
2381+</tr>
2382+
2383+<tr>
2384+
2385+<td width="10%">
2386+
2387+</td>
2388+
2389+<td width="10%" style="background: white;">
2390+
2391+</td>
2392+
2393+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2394+
2395+Load image from a file. *filename* is an UTF8 string
2396+
2397+</td>
2398+
2399+</tr>
2400+
2401+<tr style="height: 8px;">
2402+
2403+<td colspan="3">
2404+
2405+</td>
2406+
2407+</tr>
2408+
2409+<tr>
2410+
2411+<td width="10%">
2412+
2413+</td>
2414+
2415+<td colspan="2" style="background: #f0f0ff;">
2416+
2417+**procedure** LoadFromFileUTF8(**const** filenameUTF8: **string**; AHandler: TFPCustomImageReader); **virtual**;
2418+
2419+</td>
2420+
2421+</tr>
2422+
2423+<tr>
2424+
2425+<td width="10%">
2426+
2427+</td>
2428+
2429+<td width="10%" style="background: #f0f0ff;">
2430+
2431+</td>
2432+
2433+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2434+
2435+Load image from a file with the specified image reader. *filename* is an UTF8 string
2436+
2437+</td>
2438+
2439+</tr>
2440+
2441+<tr style="height: 8px;">
2442+
2443+<td colspan="3">
2444+
2445+</td>
2446+
2447+</tr>
2448+
2449+<tr>
2450+
2451+<td width="10%">
2452+
2453+</td>
2454+
2455+<td colspan="2" style="background: white;">
2456+
2457+**procedure** LoadFromStream(Str: TStream); **virtual**; **overload**;
2458+
2459+</td>
2460+
2461+</tr>
2462+
2463+<tr>
2464+
2465+<td width="10%">
2466+
2467+</td>
2468+
2469+<td width="10%" style="background: white;">
2470+
2471+</td>
2472+
2473+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2474+
2475+Load image from a stream. Format is detected automatically
2476+
2477+</td>
2478+
2479+</tr>
2480+
2481+<tr style="height: 8px;">
2482+
2483+<td colspan="3">
2484+
2485+</td>
2486+
2487+</tr>
2488+
2489+<tr>
2490+
2491+<td width="10%">
2492+
2493+</td>
2494+
2495+<td colspan="2" style="background: #f0f0ff;">
2496+
2497+**procedure** LoadFromStream(Str: TStream; Handler: TFPCustomImageReader); **virtual**; **overload**;
2498+
2499+</td>
2500+
2501+</tr>
2502+
2503+<tr>
2504+
2505+<td width="10%">
2506+
2507+</td>
2508+
2509+<td width="10%" style="background: #f0f0ff;">
2510+
2511+</td>
2512+
2513+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2514+
2515+Load image from a stream. The specified image reader is used
2516+
2517+</td>
2518+
2519+</tr>
2520+
2521+<tr style="height: 8px;">
2522+
2523+<td colspan="3">
2524+
2525+</td>
2526+
2527+</tr>
2528+
2529+<tr>
2530+
2531+<td width="10%">
2532+
2533+</td>
2534+
2535+<td colspan="2" style="background: white;">
2536+
2537+**procedure** SaveToFile(**const** filename: **string**); **virtual**; **overload**;
2538+
2539+</td>
2540+
2541+</tr>
2542+
2543+<tr>
2544+
2545+<td width="10%">
2546+
2547+</td>
2548+
2549+<td width="10%" style="background: white;">
2550+
2551+</td>
2552+
2553+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2554+
2555+Save image to a file. The format is guessed from the file extension. *filename* is an ANSI string
2556+
2557+</td>
2558+
2559+</tr>
2560+
2561+<tr style="height: 8px;">
2562+
2563+<td colspan="3">
2564+
2565+</td>
2566+
2567+</tr>
2568+
2569+<tr>
2570+
2571+<td width="10%">
2572+
2573+</td>
2574+
2575+<td colspan="2" style="background: #f0f0ff;">
2576+
2577+**procedure** SaveToFile(**const** filename: **string**; Handler:TFPCustomImageWriter); **virtual**; **overload**;
2578+
2579+</td>
2580+
2581+</tr>
2582+
2583+<tr>
2584+
2585+<td width="10%">
2586+
2587+</td>
2588+
2589+<td width="10%" style="background: #f0f0ff;">
2590+
2591+</td>
2592+
2593+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2594+
2595+Save image to a file with the specified image writer. *filename* is an ANSI string
2596+
2597+</td>
2598+
2599+</tr>
2600+
2601+<tr style="height: 8px;">
2602+
2603+<td colspan="3">
2604+
2605+</td>
2606+
2607+</tr>
2608+
2609+<tr>
2610+
2611+<td width="10%">
2612+
2613+</td>
2614+
2615+<td colspan="2" style="background: white;">
2616+
2617+**procedure** SaveToFileUTF8(**const** filenameUTF8: **string**); **virtual**; **overload**;
2618+
2619+</td>
2620+
2621+</tr>
2622+
2623+<tr>
2624+
2625+<td width="10%">
2626+
2627+</td>
2628+
2629+<td width="10%" style="background: white;">
2630+
2631+</td>
2632+
2633+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2634+
2635+Save image to a file. The format is guessed from the file extension. *filename* is an ANSI string
2636+
2637+</td>
2638+
2639+</tr>
2640+
2641+<tr style="height: 8px;">
2642+
2643+<td colspan="3">
2644+
2645+</td>
2646+
2647+</tr>
2648+
2649+<tr>
2650+
2651+<td width="10%">
2652+
2653+</td>
2654+
2655+<td colspan="2" style="background: #f0f0ff;">
2656+
2657+**procedure** SaveToFileUTF8(**const** filenameUTF8: **string**; Handler:TFPCustomImageWriter); **virtual**; **overload**;
2658+
2659+</td>
2660+
2661+</tr>
2662+
2663+<tr>
2664+
2665+<td width="10%">
2666+
2667+</td>
2668+
2669+<td width="10%" style="background: #f0f0ff;">
2670+
2671+</td>
2672+
2673+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2674+
2675+Save image to a file with the specified image writer. *filename* is an UTF8 string
2676+
2677+</td>
2678+
2679+</tr>
2680+
2681+<tr style="height: 8px;">
2682+
2683+<td colspan="3">
2684+
2685+</td>
2686+
2687+</tr>
2688+
2689+<tr>
2690+
2691+<td width="10%">
2692+
2693+</td>
2694+
2695+<td colspan="2" style="background: white;">
2696+
2697+**procedure** SaveToStream (Str:TStream; Handler:TFPCustomImageWriter);
2698+
2699+</td>
2700+
2701+</tr>
2702+
2703+<tr>
2704+
2705+<td width="10%">
2706+
2707+</td>
2708+
2709+<td width="10%" style="background: white;">
2710+
2711+</td>
2712+
2713+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2714+
2715+Save image to a stream with the specified image writer
2716+
2717+</td>
2718+
2719+</tr>
2720+
2721+<tr style="height: 8px;">
2722+
2723+<td colspan="3">
2724+
2725+</td>
2726+
2727+</tr>
2728+
2729+<tr>
2730+
2731+<td width="10%">
2732+
2733+</td>
2734+
2735+<td colspan="2" style="background: #f0f0ff;">
2736+
2737+**procedure** SaveToStreamAs(Str: TStream; AFormat: TBGRAImageFormat); **virtual**;
2738+
2739+</td>
2740+
2741+</tr>
2742+
2743+<tr>
2744+
2745+<td width="10%">
2746+
2747+</td>
2748+
2749+<td width="10%" style="background: #f0f0ff;">
2750+
2751+</td>
2752+
2753+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2754+
2755+Save image to a stream in the specified image format
2756+
2757+</td>
2758+
2759+</tr>
2760+
2761+<tr style="height: 8px;">
2762+
2763+<td colspan="3">
2764+
2765+</td>
2766+
2767+</tr>
2768+
2769+<tr>
2770+
2771+<td width="10%">
2772+
2773+</td>
2774+
2775+<td colspan="2" style="background: white;">
2776+
2777+**procedure** SaveToStreamAsPng(Str: TStream); **virtual**;
2778+
2779+</td>
2780+
2781+</tr>
2782+
2783+<tr>
2784+
2785+<td width="10%">
2786+
2787+</td>
2788+
2789+<td width="10%" style="background: white;">
2790+
2791+</td>
2792+
2793+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2794+
2795+Save image to a stream in PNG format
2796+
2797+</td>
2798+
2799+</tr>
2800+
2801+<tr style="height: 8px;">
2802+
2803+<td colspan="3">
2804+
2805+</td>
2806+
2807+</tr>
2808+
2809+<tr>
2810+
2811+<td width="10%">
2812+
2813+</td>
2814+
2815+<td colspan="2" style="background: #f0f0ff;">
2816+
2817+**procedure** LoadFromDevice(DC: System.THandle); **virtual**; **abstract**; **overload**;
2818+
2819+</td>
2820+
2821+</tr>
2822+
2823+<tr>
2824+
2825+<td width="10%">
2826+
2827+</td>
2828+
2829+<td width="10%" style="background: #f0f0ff;">
2830+
2831+</td>
2832+
2833+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2834+
2835+Gets the content of the specified device context
2836+
2837+</td>
2838+
2839+</tr>
2840+
2841+<tr style="height: 8px;">
2842+
2843+<td colspan="3">
2844+
2845+</td>
2846+
2847+</tr>
2848+
2849+<tr>
2850+
2851+<td width="10%">
2852+
2853+</td>
2854+
2855+<td colspan="2" style="background: white;">
2856+
2857+**procedure** LoadFromDevice(DC: System.THandle; ARect: TRect); **virtual**; **abstract**; **overload**;
2858+
2859+</td>
2860+
2861+</tr>
2862+
2863+<tr>
2864+
2865+<td width="10%">
2866+
2867+</td>
2868+
2869+<td width="10%" style="background: white;">
2870+
2871+</td>
2872+
2873+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2874+
2875+Gets the content from the specified rectangular area of a device context
2876+
2877+</td>
2878+
2879+</tr>
2880+
2881+<tr style="height: 8px;">
2882+
2883+<td colspan="3">
2884+
2885+</td>
2886+
2887+</tr>
2888+
2889+<tr>
2890+
2891+<td width="10%">
2892+
2893+</td>
2894+
2895+<td colspan="2" style="background: #f0f0ff;">
2896+
2897+**procedure** TakeScreenshotOfPrimaryMonitor; **virtual**; **abstract**;
2898+
2899+</td>
2900+
2901+</tr>
2902+
2903+<tr>
2904+
2905+<td width="10%">
2906+
2907+</td>
2908+
2909+<td width="10%" style="background: #f0f0ff;">
2910+
2911+</td>
2912+
2913+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2914+
2915+Fills the content with a screenshot of the primary monitor
2916+
2917+</td>
2918+
2919+</tr>
2920+
2921+<tr style="height: 8px;">
2922+
2923+<td colspan="3">
2924+
2925+</td>
2926+
2927+</tr>
2928+
2929+<tr>
2930+
2931+<td width="10%">
2932+
2933+</td>
2934+
2935+<td colspan="2" style="background: white;">
2936+
2937+**procedure** TakeScreenshot(ARect: TRect); **virtual**; **abstract**;
2938+
2939+</td>
2940+
2941+</tr>
2942+
2943+<tr>
2944+
2945+<td width="10%">
2946+
2947+</td>
2948+
2949+<td width="10%" style="background: white;">
2950+
2951+</td>
2952+
2953+<td style="border: 1px solid #e0e0a0; background: #ffffe4;">
2954+
2955+Fills the content with a screenshot of the specified rectangular area of the desktop (it can be from any screen)
2956+
2957+</td>
2958+
2959+</tr>
2960+
2961+<tr style="height: 8px;">
2962+
2963+<td colspan="3">
2964+
2965+</td>
2966+
2967+</tr>
2968+
2969+</table>
2970+
2971+For more methods, see derived class [[TBGRABitmap class|TBGRABitmap]]
2972+
2973+---
2974+*From the Free Pascal wiki, page "TBGRACustomBitmap and IBGRAScanner", as it stood on 2015-05-04 after a change by Circular, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
2975+Category: BGRABitmap

Back to history