Sign in Join
Wiki copytemporary

TBGRACustomBitmap and IBGRAScanner: what changed

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

OldNewLine
11Back to [[BGRABitmap]].
22
33This class and this interface are included in *BGRABitmapTypes*.
44
55For methods (procedure and functions), see [[TBGRABitmap class]].
66
77### TBGRACustomBitmap and IBGRAScanner
88
99#### IBGRAScanner
1010
11-<table style="border-collapse: collapse; width: 100%">
12-
13-<tr style="background: white;">
14-
15-<td colspan="3">
16-
1711*IBGRAScanner* = **interface**
1812
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-
3113Interface 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
3614
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>
15+Note: it must not implement reference counting even if it is an interface\
5416
55-<td colspan="2" style="background: #f0f0ff;">
17+*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
5618
5719**procedure** ScanMoveTo(X,Y: Integer);
5820
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-
7521Move to the position (*X*,*Y*) for the next call to *ScanNextPixel*
7622
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-
9723**function** ScanNextPixel: TBGRAPixel;
9824
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-
11525Scan the pixel at the current location and increments *X*
11626
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-
13727**function** ScanAt(X,Y: Single): TBGRAPixel;
13828
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-
15529Scan at any location using floating point coordinates
15630
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-
17731**function** ScanAtInteger(X,Y: integer): TBGRAPixel;
17832
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-
19533Scan at any location using integer coordinates
19634
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-
21735**procedure** ScanPutPixels(pdest: PBGRAPixel; count: integer; mode: TDrawMode);
21836
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-
23537Copy a row of pixels from *X* to *X*+*count*-1 to a specified destination *pdest*. *mode* indicates how to combine with existing data
23638
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-
25739**function** IsScanPutPixelsDefined: boolean;
25840
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-
27541Returns True if the function *ScanPutPixels* is available. Otherwise you need to call *ScanNextPixel* and combine pixels for example with *SetPixel*
27642
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-
29743*TScanAtFunction* = **function** (X,Y: Single): TBGRAPixel **of** **object**;
29844
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-
31545A type of function of a scanner that returns the content at floating point coordinates
31646
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-
33747*TScanAtIntegerFunction* = **function** (X,Y: Integer): TBGRAPixel **of** **object**;
33848
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-
35549A type of function of a scanner that returns the content at integer coordinates
35650
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-
37751*TScanNextPixelFunction* = **function**: TBGRAPixel **of** **object**;
37852
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-
39553A type of function of a scanner that returns the next pixel
39654
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-
41355*TBGRACustomScanner* = **class**(IBGRAScanner)
41456
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-
42757Base class for implementing *IBGRAScanner* interface
42858
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-
44359#### TBGRACustomBitmap
44460
445-<table style="border-collapse: collapse; width: 100%">
446-
447-<tr style="background: white;">
448-
449-<td colspan="3">
450-
45161*TBGRACustomBitmap* = **class**(TFPCustomImage,IBGRAScanner)
45262
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-
46563This 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*
46664
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-
48765*Caption*: **string**;
48866
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-
50567User defined caption. It does not appear on the image
50668
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-
52769*FillMode*: TFillMode;
52870
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-
54571Method to use when filling polygons (winding or alternate). See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
54672
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-
56773*LinearAntialiasing*: boolean;
56874
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-
58575Specifies if linear antialiasing must be used when drawing antialiased shapes
58676
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-
60777*ResampleFilter* : TResampleFilter;
60878
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-
62579Resample filter is used when resizing the bitmap. See [[BGRABitmap Miscellaneous types|resampling types]]
62680
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-
64781*ScanInterpolationFilter*: TResampleFilter;
64882
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-
66583Scan interpolation filter is used when the bitmap is used as a scanner (interface *IBGRAScanner*)
66684
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-
68785*ScanOffset*: TPoint;
68886
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-
70587Offset to apply when the image is scanned using *IBGRAScanner* interface
70688
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-
72789**property** Width: integer **read**;
72890
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-
74591Width of the image in pixels
74692
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-
76793**property** Height: integer **read**;
76894
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-
78595Height of the image in pixels
78696
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-
80797**property** ClipRect: TRect **read** **write**;
80898
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-
82599Clipping rectangle for all drawing functions
826100
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-
847101**property** NbPixels: integer **read**;
848102
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-
865103Total number of pixels. It is always true that *NbPixels* = *Width* * *Height*
866104
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-
887105**property** ScanLine\[y: integer\]: PBGRAPixel **read**;
888106
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-
905107Returns the address of the left-most pixel of any line. The parameter y ranges from 0 to Height-1
906108
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-
927109**property** LineOrder: TRawImageLineOrder **read**;
928110
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-
945111Indicates 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]]
946112
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-
967113**property** Data: PBGRAPixel **read**;
968114
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-
985115Provides 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]]
986116
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-
1007117**property** RefCount: integer **read**;
1008118
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-
1025119Number of references to this image. It is increased by the function *NewReference* and decreased by the function *FreeReference*
1026120
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-
1047121**property** Empty: boolean **read**;
1048122
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-
1065123Returns True if the bitmap only contains transparent pixels or has a size of zero
1066124
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-
1087125**property** HasTransparentPixels: boolean **read**;
1088126
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-
1105127Returns True if there are transparent or semitransparent pixels, and so if the image would be stored with an alpha channel
1106128
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-
1127129**property** AverageColor: TColor **read**;
1128130
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-
1145131Average color of the image
1146132
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-
1167133**property** AveragePixel: TBGRAPixel **read**;
1168134
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-
1185135Average color (including alpha) of the image
1186136
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-
1207137**property** CanvasFP: TFPImageCanvas **read**;
1208138
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-
1225139Canvas compatible with FreePascal
1226140
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-
1247141**property** CanvasDrawModeFP: TDrawMode **read** **write**;
1248142
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-
1265143Draw mode to used when image is access using FreePascal functions and *Colors* property
1266144
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-
1287145**property** Bitmap: TBitmap **read**;
1288146
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-
1305147Bitmap 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*)
1306148
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-
1327149**property** Canvas: TCanvas **read**;
1328150
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-
1345151Canvas provided by the GUI
1346152
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-
1367153**property** CanvasOpacity: byte **read** **write**;
1368154
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-
1385155Opacity to apply to changes made using GUI functions, provided *CanvasAlphaCorrection* is set to *True*
1386156
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-
1407157**property** CanvasAlphaCorrection: boolean **read** **write**;
1408158
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-
1425159Specifies if the alpha values must be corrected after GUI access to the bitmap
1426160
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-
1447161*JoinStyle*: TPenJoinStyle;
1448162
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-
1465163How to join segments. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
1466164
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-
1487165*JoinMiterLimit*: single;
1488166
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-
1505167Limit for the extension of the segments when joining them with *pjsMiter* join style, expressed in multiples of the width of the pen
1506168
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-
1527169**property** PenStyle: TPenStyle **read** **write**;
1528170
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-
1545171Pen style. See [[BGRABitmap Types imported from Graphics|BGRAGraphics]]
1546172
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-
1567173**property** CustomPenStyle: TBGRAPenStyle **read** **write**;
1568174
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-
1585175Custom pen style. See [[BGRABitmap Geometry types|geometric types]]
1586176
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-
1607177**property** LineCap: TPenEndCap **read** **write**;
1608178
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-
1625179How to draw the ends of a line
1626180
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-
1647181**property** ArrowStartSize: TPointF **read** **write**;
1648182
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-
1665183Size of arrows at the start of the line
1666184
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-
1687185**property** ArrowEndSize: TPointF **read** **write**;
1688186
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-
1705187Size of arrows at the end of the line
1706188
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-
1727189**property** ArrowStartOffset: single **read** **write**;
1728190
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-
1745191Offset of the arrow from the start of the line
1746192
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-
1767193**property** ArrowEndOffset: single **read** **write**;
1768194
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-
1785195Offset of the arrow from the end of the line
1786196
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-
1807197**property** ArrowStartRepeat: integer **read** **write**;
1808198
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-
1825199Number of times to repeat the starting arrow
1826200
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-
1847201**property** ArrowEndRepeat: integer **read** **write**;
1848202
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-
1865203Number of times to repeat the ending arrow
1866204
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-
1887205*FontName*: **string**;
1888206
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-
1905207Specifies the font to use. Unless the font renderer accept otherwise, the name is in human readable form, like 'Arial', 'Times New Roman', ...
1906208
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-
1927209*FontStyle*: TFontStyles;
1928210
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-
1945211Specifies 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]]
1946212
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-
1967213*FontQuality* : TBGRAFontQuality;
1968214
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-
1985215Specifies the quality of rendering. Default value is *fqSystem*. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
1986216
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-
2007217*FontOrientation*: integer;
2008218
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-
2025219Specifies the rotation of the text, for functions that support text rotation. It is expressed in tenth of degrees, positive values going counter-clockwise.
2026220
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-
2047221*FontVerticalAnchor*: TFontVerticalAnchor;
2048222
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-
2065223Specifies how the font is vertically aligned relative to the start coordinate. See [[BGRABitmap Miscellaneous types|miscellaneous types]]
2066224
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-
2087225**property** FontHeight: integer **read** **write**;
2088226
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-
2105227Specifies 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)
2106228
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-
2127229**property** FontFullHeight: integer **read** **write**;
2128230
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-
2145231Specifies the height of the font in pixels, taking into account the additional line spacing defined for the font
2146232
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-
2167233**property** FontAntialias: Boolean **read** **write**;
2168234
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-
2185235Simplified property to specify the quality (see *FontQuality*)
2186236
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-
2207237**property** FontPixelMetric: TFontPixelMetric **read**;
2208238
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-
2225239Returns measurement for the current font in pixels
2226240
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-
2247241**property** FontRenderer: TBGRACustomFontRenderer **read** **write**;
2248242
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-
2265243Specifies 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]]
2270244
2271-</td>
2272-
2273-</tr>
2274-
2275-<tr style="height: 8px;">
2276-
2277-<td colspan="3">
2278-
2279-</td>
2280-
2281-</tr>
245+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\
2282246
2283-</table>
247+See [[BGRABitmap tutorial Font rendering|font rendering]]
2284248
2285249#### Load and save files
2286250
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-
2297251**procedure** LoadFromFile(**const** filename: **string**); **virtual**;
2298252
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-
2315253Load image from a file. *filename* is an ANSI string
2316254
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-
2337255**procedure** LoadFromFile(**const** filename:**string**; Handler:TFPCustomImageReader); **virtual**;
2338256
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-
2355257Load image from a file with the specified image reader. *filename* is an ANSI string
2356258
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-
2377259**procedure** LoadFromFileUTF8(**const** filenameUTF8: **string**); **virtual**;
2378260
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-
2395261Load image from a file. *filename* is an UTF8 string
2396262
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-
2417263**procedure** LoadFromFileUTF8(**const** filenameUTF8: **string**; AHandler: TFPCustomImageReader); **virtual**;
2418264
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-
2435265Load image from a file with the specified image reader. *filename* is an UTF8 string
2436266
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-
2457267**procedure** LoadFromStream(Str: TStream); **virtual**; **overload**;
2458268
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-
2475269Load image from a stream. Format is detected automatically
2476270
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-
2497271**procedure** LoadFromStream(Str: TStream; Handler: TFPCustomImageReader); **virtual**; **overload**;
2498272
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-
2515273Load image from a stream. The specified image reader is used
2516274
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-
2537275**procedure** SaveToFile(**const** filename: **string**); **virtual**; **overload**;
2538276
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-
2555277Save image to a file. The format is guessed from the file extension. *filename* is an ANSI string
2556278
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-
2577279**procedure** SaveToFile(**const** filename: **string**; Handler:TFPCustomImageWriter); **virtual**; **overload**;
2578280
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-
2595281Save image to a file with the specified image writer. *filename* is an ANSI string
2596282
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-
2617283**procedure** SaveToFileUTF8(**const** filenameUTF8: **string**); **virtual**; **overload**;
2618284
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-
2635285Save image to a file. The format is guessed from the file extension. *filename* is an ANSI string
2636286
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-
2657287**procedure** SaveToFileUTF8(**const** filenameUTF8: **string**; Handler:TFPCustomImageWriter); **virtual**; **overload**;
2658288
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-
2675289Save image to a file with the specified image writer. *filename* is an UTF8 string
2676290
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-
2697291**procedure** SaveToStream (Str:TStream; Handler:TFPCustomImageWriter);
2698292
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-
2715293Save image to a stream with the specified image writer
2716294
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-
2737295**procedure** SaveToStreamAs(Str: TStream; AFormat: TBGRAImageFormat); **virtual**;
2738296
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-
2755297Save image to a stream in the specified image format
2756298
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-
2777299**procedure** SaveToStreamAsPng(Str: TStream); **virtual**;
2778300
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-
2795301Save image to a stream in PNG format
2796302
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-
2817303**procedure** LoadFromDevice(DC: System.THandle); **virtual**; **abstract**; **overload**;
2818304
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-
2835305Gets the content of the specified device context
2836306
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-
2857307**procedure** LoadFromDevice(DC: System.THandle; ARect: TRect); **virtual**; **abstract**; **overload**;
2858308
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-
2875309Gets the content from the specified rectangular area of a device context
2876310
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-
2897311**procedure** TakeScreenshotOfPrimaryMonitor; **virtual**; **abstract**;
2898312
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-
2915313Fills the content with a screenshot of the primary monitor
2916314
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-
2937315**procedure** TakeScreenshot(ARect: TRect); **virtual**; **abstract**;
2938316
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-
2955317Fills 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>
2970318
2971319For more methods, see derived class [[TBGRABitmap class|TBGRABitmap]]
2972320
2973321---
2974322*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).*
2975323Category: BGRABitmap

Back to history