Subversion Repositories Kolibri OS

Rev

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

Rev 8540 Rev 8541
Line -... Line 1...
-
 
1
/* Written by turbocat2001 (Logaev Maxim) */
-
 
2
 
1
#ifndef KOLIBRI_LIBIMG_H
3
#ifndef KOLIBRI_LIBIMG_H
2
#define KOLIBRI_LIBIMG_H
4
#define KOLIBRI_LIBIMG_H
Line 3... Line 5...
3
 
5
 
-
 
6
#include 
-
 
7
#include 
4
#include 
8
 
Line -... Line 9...
-
 
9
extern int kolibri_libimg_init(void);
-
 
10
 
5
extern int kolibri_libimg_init(void);
11
#define _stdcall __attribute__((__stdcall__))
6
 
12
 
7
//list of format id's
13
//list of format id's
8
#define LIBIMG_FORMAT_BMP       1
14
#define LIBIMG_FORMAT_BMP       1
9
#define LIBIMG_FORMAT_ICO       2
15
#define LIBIMG_FORMAT_ICO       2
Line 18... Line 24...
18
#define LIBIMG_FORMAT_PNM       11
24
#define LIBIMG_FORMAT_PNM       11
19
#define LIBIMG_FORMAT_WBMP      12
25
#define LIBIMG_FORMAT_WBMP      12
20
#define LIBIMG_FORMAT_XBM       13
26
#define LIBIMG_FORMAT_XBM       13
21
#define LIBIMG_FORMAT_Z80       14
27
#define LIBIMG_FORMAT_Z80       14
Line -... Line 28...
-
 
28
 
-
 
29
#pragma pack(push, 1)
-
 
30
typedef struct{
-
 
31
  uint32_t Checksum; // ((Width ROL 16) OR Height) XOR Data[0]        ; ignored so far
-
 
32
  uint32_t Width;
-
 
33
  uint32_t Height;
-
 
34
  uint32_t Next;
-
 
35
  uint32_t Previous;
-
 
36
  uint32_t Type;     // one of Image.bppN
-
 
37
  uint32_t* Data;
-
 
38
  uint32_t Palette;  // used iff Type eq Image.bpp1, Image.bpp2, Image.bpp4 or Image.bpp8i
-
 
39
  uint32_t Extended;
-
 
40
  uint32_t Flags;    // bitfield
-
 
41
  uint32_t Delay;    // used iff Image.IsAnimated is set in Flags
-
 
42
} Image;
-
 
43
#pragma pack(pop);
22
 
44
 
23
#define IMAGE_BPP8i  1  // indexed
45
#define IMAGE_BPP8i  1  // indexed
24
#define IMAGE_BPP24  2
46
#define IMAGE_BPP24  2
25
#define IMAGE_BPP32  3
47
#define IMAGE_BPP32  3
26
#define IMAGE_BPP15  4
48
#define IMAGE_BPP15  4
Line 29... Line 51...
29
#define IMAGE_BPP8g  7  // grayscale
51
#define IMAGE_BPP8g  7  // grayscale
30
#define IMAGE_BPP2i  8
52
#define IMAGE_BPP2i  8
31
#define IMAGE_BPP4i  9
53
#define IMAGE_BPP4i  9
32
#define IMAGE_BPP8a 10 
54
#define IMAGE_BPP8a 10 
Line -... Line 55...
-
 
55
 
-
 
56
// scale type
-
 
57
#define LIBIMG_SCALE_NONE       0 
-
 
58
#define LIBIMG_SCALE_INTEGER    1   
-
 
59
#define LIBIMG_SCALE_TILE       2    
-
 
60
#define LIBIMG_SCALE_STRETCH    3  
-
 
61
#define LIBIMG_SCALE_FIT_BOTH   LIBIMG_SCALE_STRETCH
-
 
62
#define LIBIMG_SCALE_FIT_MIN    4
-
 
63
#define LIBIMG_SCALE_FIT_RECT   LIBIMG_SCALE_FIT_MIN
-
 
64
#define LIBIMG_SCALE_FIT_WIDTH  5  
-
 
65
#define LIBIMG_SCALE_FIT_HEIGHT 6 
-
 
66
#define LIBIMG_SCALE_FIT_MAX    7     
-
 
67
 
-
 
68
// interpolation algorithm
-
 
69
#define LIBIMG_INTER_NONE       0     // use it with LIBIMG_SCALE_INTEGER, LIBIMG_SCALE_TILE, etc
-
 
70
#define LIBIMG_INTER_BILINEAR   1
-
 
71
#define LIBIMG_INTER_BICUBIC    2
-
 
72
#define LIBIMG_INTER_LANCZOS    3
-
 
73
#define LIBIMG_INTER_DEFAULT   LIBIMG_INTER_BILINEAR
33
 
74
 
34
//error codes
75
//error codes
35
#define LIBIMG_ERROR_OUT_OF_MEMORY      1
76
#define LIBIMG_ERROR_OUT_OF_MEMORY      1
36
#define LIBIMG_ERROR_FORMAT             2
77
#define LIBIMG_ERROR_FORMAT             2
37
#define LIBIMG_ERROR_CONDITIONS         3
78
#define LIBIMG_ERROR_CONDITIONS         3
Line 47... Line 88...
47
#define LIBIMG_ENCODE_STRICT_SPECIFIC   0x01
88
#define LIBIMG_ENCODE_STRICT_SPECIFIC   0x01
48
#define LIBIMG_ENCODE_STRICT_BIT_DEPTH  0x02
89
#define LIBIMG_ENCODE_STRICT_BIT_DEPTH  0x02
49
#define LIBIMG_ENCODE_DELETE_ALPHA      0x08
90
#define LIBIMG_ENCODE_DELETE_ALPHA      0x08
50
#define LIBIMG_ENCODE_FLUSH_ALPHA       0x10
91
#define LIBIMG_ENCODE_FLUSH_ALPHA       0x10
Line 51... Line -...
51
 
-
 
52
 
92
 
53
#define FLIP_VERTICAL   0x01
93
#define FLIP_VERTICAL   0x01
Line 54... Line 94...
54
#define FLIP_HORIZONTAL 0x02
94
#define FLIP_HORIZONTAL 0x02
55
 
95
 
56
#define ROTATE_90_CW    0x01
96
#define ROTATE_90_CW    0x01
57
#define ROTATE_180      0x02
97
#define ROTATE_180      0x02
58
#define ROTATE_270_CW   0x03
98
#define ROTATE_270_CW   0x03
Line 59... Line 99...
59
#define ROTATE_90_CCW   ROTATE_270_CW
99
#define ROTATE_90_CCW   ROTATE_270_CW
60
#define ROTATE_270_CCW  ROTATE_90_CW
100
#define ROTATE_270_CCW  ROTATE_90_CW
61
 
101
 
62
extern void*    (*img_decode __attribute__((__stdcall__)))(void* file_data, uint32_t length, uint32_t options);
102
extern Image*   (*img_decode _stdcall)(void* file_data, uint32_t size, uint32_t b_color);
63
extern void*    (*img_encode __attribute__((__stdcall__)))(void* image_data, uint32_t length, uint32_t option);
103
extern Image*   (*img_encode _stdcall)(Image* img, uint32_t length, uint32_t option);
64
extern void*    (*img_create __attribute__((__stdcall__)))(uint32_t width, uint32_t height, uint32_t type);
104
extern Image*   (*img_create _stdcall)(uint32_t width, uint32_t height, uint32_t type);
65
extern void     (*img_to_rgb2 __attribute__((__stdcall__)))(void* image_data, void *rgb_data);
105
extern void     (*img_to_rgb2 _stdcall)(Image* img, void *rgb_data);
66
extern void*    (*img_to_rgb __attribute__((__stdcall__)))(void *image_data);
106
extern Image*   (*img_to_rgb _stdcall)(Image* img);
67
extern uint32_t (*img_flip __attribute__((__stdcall__)))(void* image_data, uint32_t flip);
107
extern bool     (*img_flip _stdcall)(Image* img, uint32_t flip);
68
extern uint32_t (*img_flip_layer __attribute__((__stdcall__)))(void *image_data, uint32_t flip);
108
extern bool     (*img_flip_layer _stdcall)(Image *img, uint32_t flip);
69
extern uint32_t (*img_rotate __attribute__((__stdcall__)))(void* image_data, uint32_t rotate);
109
extern bool     (*img_rotate _stdcall)(Image *img, uint32_t rotate);
70
extern uint32_t (*img_rotate_layer __attribute__((__stdcall__)))(void* image_data, uint32_t rotate);
110
extern bool     (*img_rotate_layer _stdcall)(Image* data, uint32_t rotate);
71
extern void     (*img_draw __attribute__((__stdcall__)))(void *image_data, uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t xoff,  uint32_t yoff);
111
extern void     (*img_draw _stdcall)(Image *img, uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t xoff,  uint32_t yoff);
-
 
112
extern int32_t  (*img_count _stdcall)(Image *img);
-
 
113
extern bool     (*img_destroy _stdcall)(Image *img);
-
 
114
extern bool     (*img_destroy_layer _stdcall)(Image* img);
-
 
115
extern Image*   (*img_blend _stdcall)(Image* dst, Image* src, uint32_t out_x, uint32_t out_y, uint32_t in_x, uint32_t in_y, uint32_t width, uint32_t height); 
-
 
116
extern Image*   (*img_convert _stdcall)(Image *src, Image *dst, uint32_t dst_type, uint32_t, uint32_t); 
-
 
117
extern Image*   (*img_resize_data _stdcall)(Image *src, uint32_t width, uint32_t height);
-
 
118
extern Image*   (*img_scale _stdcall)(Image* src, uint32_t crop_x, uint32_t crop_y, uint32_t crop_width, uint32_t crop_height, Image* dst, uint32_t scale_type, uint32_t inter, uint32_t new_width, uint32_t new_height);
-
 
119
 
-
 
120
void img_fill_color(Image* img, uint32_t width, uint32_t height, uint32_t color){
-
 
121
    for (uint32_t i = 0; i < width*height; i++) {
Line 72... Line 122...
72
extern uint32_t (*img_count __attribute__((__stdcall__)))(void *image_data);
122
        img->Data[i] = color;