source: trunk/model.h

Last change on this file was 11, checked in by Gregg Young, 8 years ago

This changes the bitmap save from an internal bitmap or the use of MMOS2 to using GBM. The save code was adapted from GBMv2 by Heiko Nitzsche and Andy Keys. Also fixed the failure of the file dialog to update the file extension name on the first save after a format changes. Non English resources haven't been updated yet. Several more build error warning fixes.

  • Property svn:eol-style set to native
File size: 3.2 KB
Line 
1/*
2
3model.c - Work on the model used in GbmV2
4
5*/
6
7#ifndef MODEL_H
8#define MODEL_H
9
10#include "gbm\gbm.h"
11
12/* These needs to encompass all the GBM errors, plus some extras */
13typedef int MOD_ERR;
14#define MOD_ERR_OK ((MOD_ERR) 0)
15#define MOD_ERR_MEM ((MOD_ERR) 1)
16#define MOD_ERR_OPEN ((MOD_ERR) 2)
17#define MOD_ERR_CREATE ((MOD_ERR) 3)
18#define MOD_ERR_SUPPORT ((MOD_ERR) 4)
19#define MOD_ERR_HDC ((MOD_ERR) 5)
20#define MOD_ERR_HPS ((MOD_ERR) 6)
21#define MOD_ERR_HBITMAP ((MOD_ERR) 7)
22#define MOD_ERR_HMF ((MOD_ERR) 8)
23#define MOD_ERR_CLIP ((MOD_ERR) 9)
24#define MOD_ERR_READ_BPP ((MOD_ERR) 10)
25#define MOD_ERR_GBM(rc) ((MOD_ERR) 0x8000+(rc))
26
27typedef struct
28 {
29 GBM gbm;
30 GBMRGB gbmrgb[0x100];
31 BYTE *pbData;
32 } MOD;
33
34#pragma pack(2)
35typedef struct
36{
37 BITMAPINFOHEADER2 bmp2;
38 RGB2 argb2Color[0x100]; /* unused for bitmaps >8bpp */
39 MOD mod;
40} BITMAP;
41#pragma pack()
42
43
44extern MOD_ERR ModCreate(
45 int w, int h, int bpp, const GBMRGB gbmrgb[],
46 MOD *modNew
47 );
48
49extern MOD_ERR ModDelete(MOD *mod);
50
51extern MOD_ERR ModCopy(const MOD *mod, MOD *modNew);
52
53extern MOD_ERR ModMove(MOD *mod, MOD *modNew);
54
55extern MOD_ERR ModCreateFromFile(
56 const CHAR *szFn, const CHAR *szOpt,
57 MOD *modNew
58 );
59
60extern MOD_ERR ModWriteToFile(
61 const MOD *mod,
62 const CHAR *szFn, const CHAR *szOpt
63 );
64
65extern MOD_ERR ModExpandTo24Bpp(const MOD *mod, MOD *mod24);
66
67extern MOD_ERR ModReflectHorz(const MOD *mod, MOD *modNew);
68extern MOD_ERR ModReflectVert(const MOD *mod, MOD *modNew);
69extern MOD_ERR ModTranspose (const MOD *mod, MOD *modNew);
70extern MOD_ERR ModRotate90 (const MOD *mod, MOD *modNew);
71extern MOD_ERR ModRotate180 (const MOD *mod, MOD *modNew);
72extern MOD_ERR ModRotate270 (const MOD *mod, MOD *modNew);
73
74extern MOD_ERR ModExtractSubrectangle(
75 const MOD *mod,
76 int x, int y, int w, int h,
77 MOD *modNew
78 );
79
80extern MOD_ERR ModBlit(
81 MOD *modDst, int dx, int dy,
82 const MOD *modSrc, int sx, int sy,
83 int w, int h
84 );
85
86/*...scolour adjustment mappings:0:*/
87#define CVT_I_TO_L 0
88#define CVT_I_TO_P 1
89#define CVT_L_TO_I 2
90#define CVT_L_TO_P 3
91#define CVT_P_TO_I 4
92#define CVT_P_TO_L 5
93/*...e*/
94
95extern MOD_ERR ModColourAdjust(
96 const MOD *mod,
97 int map, double gama, double shelf,
98 MOD *modNew
99 );
100
101/*...sbpp palette and algorithm mappings:0:*/
102#define CVT_BW 0
103#define CVT_VGA 1
104#define CVT_8 2
105#define CVT_4G 3
106#define CVT_784 4
107#define CVT_666 5
108#define CVT_444 6
109#define CVT_8G 7
110#define CVT_TRIPEL 8
111#define CVT_RGB 9
112#define CVT_FREQ 10
113#define CVT_MCUT 11
114
115#define CVT_NEAREST 0
116#define CVT_ERRDIFF 1
117#define CVT_HALFTONE 2
118/*...e*/
119
120extern MOD_ERR ModBppMap(
121 const MOD *mod,
122 int iPal, int iAlg,
123 int iKeepRed, int iKeepGreen, int iKeepBlue, int nCols,
124 MOD *modNew
125 );
126
127extern MOD_ERR ModFixRedeye(const MOD *mod, MOD *modNew);
128
129/*extern MOD_ERR ModResize(
130 const MOD *mod,
131 int nw, int nh,
132 BOOL isGrayscale,
133 BOOL useScaleFilter,
134 GBM_SCALE_FILTER scaleFilter,
135 MOD *modNew
136 ); */
137
138extern MOD_ERR ModCreateFromHPS(
139 HPS hps, int w, int h, int bpp,
140 MOD *modNew
141 );
142
143extern MOD_ERR ModMakeHBITMAP(
144 const MOD *mod,
145 HAB hab,
146 HBITMAP *phbm
147 );
148
149extern MOD_ERR ModMakeBITMAP(
150 const MOD *mod,
151 BITMAP *pbmp
152 );
153
154extern MOD_ERR ModMakeHMF(
155 HBITMAP hbm,
156 HAB hab,
157 HMF *phmf
158 );
159
160extern const CHAR * ModErrorString(MOD_ERR rc);
161
162#endif
Note: See TracBrowser for help on using the repository browser.