8888 self->release (); \
8989 }
9090
91- extern " C" void Fl_load_system_icons (void ) {
92- Fl_File_Icon::load_system_icons ();
93- }
9491
9592void Fl_Image_set_scaling_algorithm (int algorithm) {
9693 LOCK (Fl_Image::scaling_algorithm ((Fl_RGB_Scaling)algorithm));
@@ -110,18 +107,6 @@ int Fl_RGB_Image_scaling_algorithm(void) {
110107 return (int )ret;
111108}
112109
113- IMAGE_DEFINE (Fl_JPEG_Image)
114-
115- Fl_JPEG_Image *Fl_JPEG_Image_new(const char *filename) {
116- LOCK (auto ret = new Fl_JPEG_Image (filename));
117- return ret;
118- }
119-
120- Fl_JPEG_Image *Fl_JPEG_Image_from (const unsigned char *data) {
121- LOCK (auto ret = new Fl_JPEG_Image (nullptr , data));
122- return ret;
123- }
124-
125110IMAGE_DEFINE (Fl_Image)
126111
127112void Fl_Image_color_average(Fl_Image *self, unsigned int c, float i) {
@@ -144,6 +129,104 @@ void Fl_Image_label_menu_item(Fl_Image *self, void *m) {
144129 LOCK (self->label ((Fl_Menu_Item *)m));
145130}
146131
132+
133+ IMAGE_DEFINE (Fl_Tiled_Image)
134+
135+ Fl_Tiled_Image *Fl_Tiled_Image_new(Fl_Image *i, int w, int h) {
136+ LOCK (auto ret = new Fl_Tiled_Image (i->copy (), w, h));
137+ return ret;
138+ }
139+
140+ IMAGE_DEFINE (Fl_RGB_Image)
141+
142+ Fl_RGB_Image *
143+ Fl_RGB_Image_new(const unsigned char *bits, int W, int H, int depth, int ld) {
144+ int temp = 0 ;
145+ if (ld == 0 ) {
146+ temp = abs (W * depth);
147+ } else {
148+ temp = abs (ld);
149+ }
150+ auto sz = abs (temp * H);
151+ auto *arr = new unsigned char [sz];
152+ if (!arr)
153+ return nullptr ;
154+ memset (arr, 0 , sz);
155+ memcpy (arr, bits, sz);
156+ LOCK (auto *img = new Fl_RGB_Image (arr, W, H, depth, ld);
157+ if (!img) return nullptr ;
158+ img->alloc_array = 1 );
159+ return img;
160+ }
161+
162+ Fl_RGB_Image *Fl_RGB_Image_from_data (
163+ const unsigned char *bits, int W, int H, int depth, int ld
164+ ) {
165+ LOCK (auto *img = new Fl_RGB_Image (bits, W, H, depth, ld);
166+ if (!img) return nullptr ;
167+ img->alloc_array = 0 );
168+ return img;
169+ }
170+
171+ extern int fl_convert_pixmap (
172+ const char *const *cdata, unsigned char *out, unsigned int bg
173+ );
174+
175+ Fl_RGB_Image *Fl_RGB_Image_from_pixmap (const Fl_Pixmap *pxm) {
176+ auto rgb = new Fl_RGB_Image (nullptr , pxm->data_w (), pxm->data_h (), 4 );
177+ if (pxm && pxm->data_w () > 0 && pxm->data_h () > 0 ) {
178+ rgb->array = new uchar[pxm->data_w () * pxm->data_h () * rgb->d ()];
179+ rgb->alloc_array = 1 ;
180+ fl_convert_pixmap (pxm->data (), (uchar *)rgb->array , 49 );
181+ }
182+ rgb->scale (pxm->w (), pxm->h (), 0 , 1 );
183+ return rgb;
184+ }
185+
186+
187+ IMAGE_DEFINE (Fl_Pixmap)
188+
189+ Fl_Pixmap *Fl_Pixmap_new(const char *const *D) {
190+ LOCK (Fl_Pixmap temp (D); auto ret = temp.copy (temp.w (), temp.h ()));
191+ return (Fl_Pixmap *)ret;
192+ }
193+
194+ IMAGE_DEFINE (Fl_XPM_Image)
195+
196+ Fl_XPM_Image *Fl_XPM_Image_new(const char *filename) {
197+ LOCK (auto ret = new Fl_XPM_Image (filename));
198+ return ret;
199+ }
200+
201+ IMAGE_DEFINE (Fl_XBM_Image)
202+
203+ Fl_XBM_Image *Fl_XBM_Image_new(const char *filename) {
204+ LOCK (auto ret = new Fl_XBM_Image (filename));
205+ return ret;
206+ }
207+
208+ #ifdef CFLTK_USE_IMAGES
209+
210+ void Fl_register_images (void ) {
211+ LOCK (fl_register_images ());
212+ }
213+
214+ extern " C" void Fl_load_system_icons (void ) {
215+ Fl_File_Icon::load_system_icons ();
216+ }
217+
218+ IMAGE_DEFINE (Fl_JPEG_Image)
219+
220+ Fl_JPEG_Image *Fl_JPEG_Image_new(const char *filename) {
221+ LOCK (auto ret = new Fl_JPEG_Image (filename));
222+ return ret;
223+ }
224+
225+ Fl_JPEG_Image *Fl_JPEG_Image_from (const unsigned char *data) {
226+ LOCK (auto ret = new Fl_JPEG_Image (nullptr , data));
227+ return ret;
228+ }
229+
147230IMAGE_DEFINE (Fl_PNG_Image)
148231
149232Fl_PNG_Image *Fl_PNG_Image_new(const char *filename) {
@@ -267,86 +350,13 @@ int Fl_Anim_GIF_Image_playing(const Fl_Anim_GIF_Image *self) {
267350 return ret;
268351}
269352
270- IMAGE_DEFINE (Fl_Pixmap)
271-
272- Fl_Pixmap *Fl_Pixmap_new(const char *const *D) {
273- LOCK (Fl_Pixmap temp (D); auto ret = temp.copy (temp.w (), temp.h ()));
274- return (Fl_Pixmap *)ret;
275- }
276-
277- IMAGE_DEFINE (Fl_XPM_Image)
278-
279- Fl_XPM_Image *Fl_XPM_Image_new(const char *filename) {
280- LOCK (auto ret = new Fl_XPM_Image (filename));
281- return ret;
282- }
283-
284- IMAGE_DEFINE (Fl_XBM_Image)
285-
286- Fl_XBM_Image *Fl_XBM_Image_new(const char *filename) {
287- LOCK (auto ret = new Fl_XBM_Image (filename));
288- return ret;
289- }
290-
291353IMAGE_DEFINE (Fl_PNM_Image)
292354
293355Fl_PNM_Image *Fl_PNM_Image_new(const char *filename) {
294356 LOCK (auto ret = new Fl_PNM_Image (filename));
295357 return ret;
296358}
297359
298- IMAGE_DEFINE (Fl_Tiled_Image)
299-
300- Fl_Tiled_Image *Fl_Tiled_Image_new(Fl_Image *i, int w, int h) {
301- LOCK (auto ret = new Fl_Tiled_Image (i->copy (), w, h));
302- return ret;
303- }
304-
305- IMAGE_DEFINE (Fl_RGB_Image)
306-
307- Fl_RGB_Image *
308- Fl_RGB_Image_new(const unsigned char *bits, int W, int H, int depth, int ld) {
309- int temp = 0 ;
310- if (ld == 0 ) {
311- temp = abs (W * depth);
312- } else {
313- temp = abs (ld);
314- }
315- auto sz = abs (temp * H);
316- auto *arr = new unsigned char [sz];
317- if (!arr)
318- return nullptr ;
319- memset (arr, 0 , sz);
320- memcpy (arr, bits, sz);
321- LOCK (auto *img = new Fl_RGB_Image (arr, W, H, depth, ld);
322- if (!img) return nullptr ;
323- img->alloc_array = 1 );
324- return img;
325- }
326-
327- Fl_RGB_Image *Fl_RGB_Image_from_data (
328- const unsigned char *bits, int W, int H, int depth, int ld
329- ) {
330- LOCK (auto *img = new Fl_RGB_Image (bits, W, H, depth, ld);
331- if (!img) return nullptr ;
332- img->alloc_array = 0 );
333- return img;
334- }
335-
336- extern int fl_convert_pixmap (
337- const char *const *cdata, unsigned char *out, unsigned int bg
338- );
339-
340- Fl_RGB_Image *Fl_RGB_Image_from_pixmap (const Fl_Pixmap *pxm) {
341- auto rgb = new Fl_RGB_Image (nullptr , pxm->data_w (), pxm->data_h (), 4 );
342- if (pxm && pxm->data_w () > 0 && pxm->data_h () > 0 ) {
343- rgb->array = new uchar[pxm->data_w () * pxm->data_h () * rgb->d ()];
344- rgb->alloc_array = 1 ;
345- fl_convert_pixmap (pxm->data (), (uchar *)rgb->array , 49 );
346- }
347- rgb->scale (pxm->w (), pxm->h (), 0 , 1 );
348- return rgb;
349- }
350360
351361IMAGE_DEFINE (Fl_Shared_Image)
352362
@@ -381,6 +391,4 @@ Fl_ICO_Image_icondirentry(const Fl_ICO_Image *self, unsigned long *size) {
381391 return temp;
382392}
383393
384- void Fl_register_images (void ) {
385- LOCK (fl_register_images ());
386- }
394+ #endif
0 commit comments