Subversion Repositories Kolibri OS

Rev

Rev 6613 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6613 Rev 7597
Line 1... Line 1...
1
(*
1
(*
2
    Copyright 2016 KolibriOS team
2
    Copyright 2016, 2018 KolibriOS team
Line 3... Line 3...
3
 
3
 
4
    This program is free software: you can redistribute it and/or modify
4
    This program is free software: you can redistribute it and/or modify
5
    it under the terms of the GNU Lesser General Public License as published by
5
    it under the terms of the GNU Lesser General Public License as published by
6
    the Free Software Foundation, either version 3 of the License, or
6
    the Free Software Foundation, either version 3 of the License, or
Line 24... Line 24...
24
 
24
 
25
  FLIP_VERTICAL   *= 1;
25
  FLIP_VERTICAL   *= 1;
Line 26... Line 26...
26
  FLIP_HORIZONTAL *= 2;
26
  FLIP_HORIZONTAL *= 2;
27
 
27
 
28
 
28
 
29
  ROTATE_90_CW	  *= 1;
29
  ROTATE_90_CW    *= 1;
30
  ROTATE_180	  *= 2;
30
  ROTATE_180      *= 2;
Line 31... Line 31...
31
  ROTATE_270_CW   *= 3;
31
  ROTATE_270_CW   *= 3;
32
  ROTATE_90_CCW   *= ROTATE_270_CW;
32
  ROTATE_90_CCW   *= ROTATE_270_CW;
33
  ROTATE_270_CCW  *= ROTATE_90_CW;
33
  ROTATE_270_CCW  *= ROTATE_90_CW;
34
 
34
 
35
 
35
 
36
  // scale type 		      corresponding img_scale params
36
  // scale type                       corresponding img_scale params
37
  LIBIMG_SCALE_INTEGER	   *= 1;  //    scale factor ; reserved 0
37
  LIBIMG_SCALE_INTEGER     *= 1;  //    scale factor ; reserved 0
38
  LIBIMG_SCALE_TILE	   *= 2;  //    new width    ; new height
38
  LIBIMG_SCALE_TILE        *= 2;  //    new width    ; new height
Line 39... Line 39...
39
  LIBIMG_SCALE_STRETCH	   *= 3;  //    new width    ; new height
39
  LIBIMG_SCALE_STRETCH     *= 3;  //    new width    ; new height
40
  LIBIMG_SCALE_FIT_RECT    *= 4;  //    new width    ; new height
40
  LIBIMG_SCALE_FIT_RECT    *= 4;  //    new width    ; new height
41
  LIBIMG_SCALE_FIT_WIDTH   *= 5;  //    new width    ; new height
41
  LIBIMG_SCALE_FIT_WIDTH   *= 5;  //    new width    ; new height
42
  LIBIMG_SCALE_FIT_HEIGHT  *= 6;  //    new width    ; new height
42
  LIBIMG_SCALE_FIT_HEIGHT  *= 6;  //    new width    ; new height
Line 43... Line 43...
43
  LIBIMG_SCALE_FIT_MAX	   *= 7;  //    new width    ; new height
43
  LIBIMG_SCALE_FIT_MAX     *= 7;  //    new width    ; new height
44
 
44
 
45
 
45
 
46
  // interpolation algorithm
46
  // interpolation algorithm
47
  LIBIMG_INTER_NONE	   *= 0;  //    use it with LIBIMG_SCALE_INTEGER, LIBIMG_SCALE_TILE, etc
47
  LIBIMG_INTER_NONE        *= 0;  //    use it with LIBIMG_SCALE_INTEGER, LIBIMG_SCALE_TILE, etc
48
  LIBIMG_INTER_BILINEAR    *= 1;
48
  LIBIMG_INTER_BILINEAR    *= 1;
49
  LIBIMG_INTER_DEFAULT	   *= LIBIMG_INTER_BILINEAR;
49
  LIBIMG_INTER_DEFAULT     *= LIBIMG_INTER_BILINEAR;
50
 
50
 
51
 
51
 
52
  // list of format id's
52
  // list of format id's
53
  LIBIMG_FORMAT_BMP	   *=  1;
53
  LIBIMG_FORMAT_BMP        *=  1;
54
  LIBIMG_FORMAT_ICO	   *=  2;
54
  LIBIMG_FORMAT_ICO        *=  2;
55
  LIBIMG_FORMAT_CUR	   *=  3;
55
  LIBIMG_FORMAT_CUR        *=  3;
56
  LIBIMG_FORMAT_GIF	   *=  4;
56
  LIBIMG_FORMAT_GIF        *=  4;
57
  LIBIMG_FORMAT_PNG	   *=  5;
57
  LIBIMG_FORMAT_PNG        *=  5;
Line 58... Line 58...
58
  LIBIMG_FORMAT_JPEG	   *=  6;
58
  LIBIMG_FORMAT_JPEG       *=  6;
59
  LIBIMG_FORMAT_TGA	   *=  7;
59
  LIBIMG_FORMAT_TGA        *=  7;
60
  LIBIMG_FORMAT_PCX	   *=  8;
60
  LIBIMG_FORMAT_PCX        *=  8;
61
  LIBIMG_FORMAT_XCF	   *=  9;
61
  LIBIMG_FORMAT_XCF        *=  9;
62
  LIBIMG_FORMAT_TIFF	   *= 10;
62
  LIBIMG_FORMAT_TIFF       *= 10;
Line 63... Line 63...
63
  LIBIMG_FORMAT_PNM	   *= 11;
63
  LIBIMG_FORMAT_PNM        *= 11;
64
  LIBIMG_FORMAT_WBMP	   *= 12;
64
  LIBIMG_FORMAT_WBMP       *= 12;
65
  LIBIMG_FORMAT_XBM	   *= 13;
65
  LIBIMG_FORMAT_XBM        *= 13;
66
  LIBIMG_FORMAT_Z80	   *= 14;
66
  LIBIMG_FORMAT_Z80        *= 14;
67
 
67
 
68
 
68
 
69
  // encode flags (byte 0x02 of common option)
69
  // encode flags (byte 0x02 of common option)
70
  LIBIMG_ENCODE_STRICT_SPECIFIC   *= 01H;
70
  LIBIMG_ENCODE_STRICT_SPECIFIC   *= 01H;
71
  LIBIMG_ENCODE_STRICT_BIT_DEPTH  *= 02H;
71
  LIBIMG_ENCODE_STRICT_BIT_DEPTH  *= 02H;
72
  LIBIMG_ENCODE_DELETE_ALPHA	  *= 08H;
72
  LIBIMG_ENCODE_DELETE_ALPHA      *= 08H;
73
  LIBIMG_ENCODE_FLUSH_ALPHA	  *= 10H;
73
  LIBIMG_ENCODE_FLUSH_ALPHA       *= 10H;
74
 
74
 
Line 110... Line 110...
110
  END;
110
  END;
Line 111... Line 111...
111
 
111
 
Line 112... Line 112...
112
 
112
 
113
  ImageDecodeOptions* = RECORD
113
  ImageDecodeOptions* = RECORD
Line 114... Line 114...
114
 
114
 
Line 115... Line 115...
115
    UsedSize	     *: INTEGER; // if >=8, the field BackgroundColor is valid, and so on
115
    UsedSize         *: INTEGER; // if >=8, the field BackgroundColor is valid, and so on
Line 116... Line 116...
116
    BackgroundColor  *: INTEGER  // used for transparent images as background
116
    BackgroundColor  *: INTEGER  // used for transparent images as background
117
 
117
 
118
  END;
118
  END;
119
 
119
 
120
 
120
 
Line 121... Line 121...
121
  FormatsTableEntry* = RECORD
121
  FormatsTableEntry* = RECORD
Line 122... Line 122...
122
 
122
 
Line 123... Line 123...
123
    Format_id	  *: INTEGER;
123
    Format_id     *: INTEGER;
Line 124... Line 124...
124
    Is		  *: INTEGER;
124
    Is            *: INTEGER;
125
    Decode	  *: INTEGER;
125
    Decode        *: INTEGER;
Line 145... Line 145...
145
;;================================================================================================;;
145
;;================================================================================================;;
146
*)
146
*)
Line 147... Line 147...
147
 
147
 
148
 
148
 
149
 
149
 
150
    img_to_rgb	       *: PROCEDURE (img: INTEGER): INTEGER;
150
    img_to_rgb         *: PROCEDURE (img: INTEGER): INTEGER;
151
(*
151
(*
152
;;------------------------------------------------------------------------------------------------;;
152
;;------------------------------------------------------------------------------------------------;;
Line 158... Line 158...
158
;;================================================================================================;;
158
;;================================================================================================;;
159
*)
159
*)
Line 160... Line 160...
160
 
160
 
161
 
161
 
162
 
162
 
163
    img_decode	       *: PROCEDURE (data, length, options: INTEGER): INTEGER;
163
    img_decode         *: PROCEDURE (data, length, options: INTEGER): INTEGER;
164
(*
164
(*
165
;;------------------------------------------------------------------------------------------------;;
165
;;------------------------------------------------------------------------------------------------;;
Line 173... Line 173...
173
;;================================================================================================;;
173
;;================================================================================================;;
174
*)
174
*)
Line 175... Line 175...
175
 
175
 
176
 
176
 
177
 
177
 
178
    img_encode	       *: PROCEDURE (img: INTEGER; common, specific: INTEGER): INTEGER;
178
    img_encode         *: PROCEDURE (img: INTEGER; common, specific: INTEGER): INTEGER;
179
(*
179
(*
180
;;------------------------------------------------------------------------------------------------;;
180
;;------------------------------------------------------------------------------------------------;;
Line 201... Line 201...
201
;;================================================================================================;;
201
;;================================================================================================;;
202
  *)
202
  *)
Line 203... Line 203...
203
 
203
 
204
 
204
 
205
 
205
 
206
    img_create	       *: PROCEDURE (width, height, type: INTEGER): INTEGER;
206
    img_create         *: PROCEDURE (width, height, type: INTEGER): INTEGER;
207
(*
207
(*
208
;;------------------------------------------------------------------------------------------------;;
208
;;------------------------------------------------------------------------------------------------;;
Line 244... Line 244...
244
;;================================================================================================;;
244
;;================================================================================================;;
245
*)
245
*)
Line 246... Line 246...
246
 
246
 
247
 
247
 
248
 
248
 
249
    img_count	       *: PROCEDURE (img: INTEGER): INTEGER;
249
    img_count          *: PROCEDURE (img: INTEGER): INTEGER;
250
(*
250
(*
251
;;------------------------------------------------------------------------------------------------;;
251
;;------------------------------------------------------------------------------------------------;;
Line 257... Line 257...
257
;;================================================================================================;;
257
;;================================================================================================;;
258
*)
258
*)
Line 259... Line 259...
259
 
259
 
260
 
260
 
261
 
261
 
262
    img_flip	       *: PROCEDURE (img: INTEGER; flip_kind: INTEGER): BOOLEAN;
262
    img_flip           *: PROCEDURE (img: INTEGER; flip_kind: INTEGER): BOOLEAN;
263
(*
263
(*
264
;;------------------------------------------------------------------------------------------------;;
264
;;------------------------------------------------------------------------------------------------;;
Line 285... Line 285...
285
;;================================================================================================;;
285
;;================================================================================================;;
286
*)
286
*)
Line 287... Line 287...
287
 
287
 
288
 
288
 
289
 
289
 
290
    img_rotate	       *: PROCEDURE (img: INTEGER; rotate_kind: INTEGER): BOOLEAN;
290
    img_rotate         *: PROCEDURE (img: INTEGER; rotate_kind: INTEGER): BOOLEAN;
291
(*
291
(*
292
;;------------------------------------------------------------------------------------------------;;
292
;;------------------------------------------------------------------------------------------------;;
Line 313... Line 313...
313
;;================================================================================================;;
313
;;================================================================================================;;
314
*)
314
*)
Line 315... Line 315...
315
 
315
 
316
 
316
 
317
 
317
 
318
    img_draw	       *: PROCEDURE (img: INTEGER; x, y, width, height, xpos, ypos: INTEGER);
318
    img_draw           *: PROCEDURE (img: INTEGER; x, y, width, height, xpos, ypos: INTEGER);
319
(*
319
(*
320
;;------------------------------------------------------------------------------------------------;;
320
;;------------------------------------------------------------------------------------------------;;
Line 330... Line 330...
330
;;================================================================================================;;
330
;;================================================================================================;;
331
*)
331
*)
Line 332... Line 332...
332
 
332
 
333
 
333
 
334
 
334
 
335
    img_scale	       *: PROCEDURE (src: INTEGER; crop_x, crop_y, crop_width, crop_height: INTEGER; dst: INTEGER; scale, inter, param1, param2: INTEGER ): INTEGER;
335
    img_scale          *: PROCEDURE (src: INTEGER; crop_x, crop_y, crop_width, crop_height: INTEGER; dst: INTEGER; scale, inter, param1, param2: INTEGER ): INTEGER;
336
(*
336
(*
337
;;------------------------------------------------------------------------------------------------;;
337
;;------------------------------------------------------------------------------------------------;;
Line 396... Line 396...
396
 
396
 
397
 
397
 
Line 398... Line 398...
398
PROCEDURE main;
398
PROCEDURE main;
399
VAR Lib, formats_table_ptr: INTEGER;
399
VAR Lib, formats_table_ptr: INTEGER;
400
 
400
 
401
  PROCEDURE GetProc(v: INTEGER; name: ARRAY OF CHAR);
401
  PROCEDURE GetProc(Lib, v: INTEGER; name: ARRAY OF CHAR);
402
  VAR a: INTEGER;
402
  VAR a: INTEGER;
403
  BEGIN
403
  BEGIN
404
    a := KOSAPI.GetProcAdr(name, Lib);
404
    a := KOSAPI.GetProcAdr(name, Lib);
Line 405... Line 405...
405
    ASSERT(a # 0);
405
    ASSERT(a # 0);
406
    sys.PUT(v, a)
406
    sys.PUT(v, a)
407
  END GetProc;
407
  END GetProc;
408
 
408
 
409
BEGIN
409
BEGIN
410
  Lib := KOSAPI.LoadLib("/rd/1/lib/libimg.obj");
410
  Lib := KOSAPI.LoadLib("/rd/1/lib/libimg.obj");
411
  ASSERT(Lib # 0);
411
  ASSERT(Lib # 0);
412
  GetProc(sys.ADR(img_is_img)	     , "img_is_img");
412
  GetProc(Lib, sys.ADR(img_is_img)        , "img_is_img");
413
  GetProc(sys.ADR(img_to_rgb)	     , "img_to_rgb");
413
  GetProc(Lib, sys.ADR(img_to_rgb)        , "img_to_rgb");
414
  GetProc(sys.ADR(img_to_rgb2)	     , "img_to_rgb2");
414
  GetProc(Lib, sys.ADR(img_to_rgb2)       , "img_to_rgb2");
415
  GetProc(sys.ADR(img_decode)	     , "img_decode");
415
  GetProc(Lib, sys.ADR(img_decode)        , "img_decode");
416
  GetProc(sys.ADR(img_encode)	     , "img_encode");
416
  GetProc(Lib, sys.ADR(img_encode)        , "img_encode");
417
  GetProc(sys.ADR(img_create)	     , "img_create");
417
  GetProc(Lib, sys.ADR(img_create)        , "img_create");
418
  GetProc(sys.ADR(img_destroy)	     , "img_destroy");
418
  GetProc(Lib, sys.ADR(img_destroy)       , "img_destroy");
419
  GetProc(sys.ADR(img_destroy_layer) , "img_destroy_layer");
419
  GetProc(Lib, sys.ADR(img_destroy_layer) , "img_destroy_layer");
420
  GetProc(sys.ADR(img_count)	     , "img_count");
420
  GetProc(Lib, sys.ADR(img_count)         , "img_count");
421
  GetProc(sys.ADR(img_flip)	     , "img_flip");
421
  GetProc(Lib, sys.ADR(img_flip)          , "img_flip");
422
  GetProc(sys.ADR(img_flip_layer)    , "img_flip_layer");
422
  GetProc(Lib, sys.ADR(img_flip_layer)    , "img_flip_layer");
423
  GetProc(sys.ADR(img_rotate)	     , "img_rotate");
423
  GetProc(Lib, sys.ADR(img_rotate)        , "img_rotate");
424
  GetProc(sys.ADR(img_rotate_layer)  , "img_rotate_layer");
424
  GetProc(Lib, sys.ADR(img_rotate_layer)  , "img_rotate_layer");
425
  GetProc(sys.ADR(img_draw)	     , "img_draw");
425
  GetProc(Lib, sys.ADR(img_draw)          , "img_draw");
426
  GetProc(sys.ADR(img_scale)	     , "img_scale");
426
  GetProc(Lib, sys.ADR(img_scale)         , "img_scale");
Line 427... Line 427...
427
  GetProc(sys.ADR(img_convert)	     , "img_convert");
427
  GetProc(Lib, sys.ADR(img_convert)       , "img_convert");