forked from farbrausch/fr_public
-
Notifications
You must be signed in to change notification settings - Fork 0
/
genbitmap.hpp
111 lines (88 loc) · 5.57 KB
/
genbitmap.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// This file is distributed under a BSD license. See LICENSE.txt for details.
#ifndef __GENBITMAP__
#define __GENBITMAP__
#include "_types.hpp"
#include "w3texmain.hpp"
namespace Werkk3TexLib
{
/****************************************************************************/
/****************************************************************************/
void Fade64(sU64 &r,sU64 &c0,sU64 &c1,sInt fade);
struct BilinearContext
{
sU64 *Src; // image data
sInt XShift; // xsize = 1 << XShift
sInt XSize1,YSize1; // xsize-1,ysize-1
sU32 XAm,YAm; // x-andmask, y-andmask
sInt XMax1,YMax1;
};
void BilinearSetup(BilinearContext *ctx,sU64 *src,sInt w,sInt h,sInt b);
void BilinearFilter(BilinearContext *ctx,sU64 *r,sInt u,sInt v);
//void BilinearFilter(sU64 *r,sU64 *src,sInt w,sInt h,sInt u,sInt v,sInt b);
sU64 GetColor64(sU32 c);
/****************************************************************************/
class GenBitmap : public KObject
{
public:
GenBitmap();
~GenBitmap();
void Copy(KObject *);
KObject *Copy();
void Init(sInt x,sInt y);
sU64 *Data; // the bitmap itself
sInt XSize; // xsize
sInt YSize; // ysize
sInt Size; // xsize*ysize, saves some bytes of code for common loops
sInt Format; // format to use when creating texture
sInt TexMipCount;
sInt TexMipTresh;
};
/****************************************************************************/
/****************************************************************************/
GenBitmap * __stdcall Bitmap_Flat(sInt xs,sInt ys,sU32 color);
GenBitmap * __stdcall Bitmap_Format(GenBitmap *bm,sInt format,sInt count,sInt tresh);
#if sLINK_ENGINE
GenBitmap * __stdcall Bitmap_RenderTarget(sInt xs,sInt ys,sU32 format);
#endif
GenBitmap * __stdcall Bitmap_Merge(sInt mode,sInt count,GenBitmap *b0,...);
GenBitmap * __stdcall Bitmap_Color(GenBitmap *bm,sInt mode,sU32 color);
GenBitmap * __stdcall Bitmap_Range(GenBitmap *bm,sInt mode,sU32 color0,sU32 color1);
GenBitmap * __stdcall Bitmap_GlowRect(GenBitmap *bm,sF32 cx,sF32 cy,sF32 rx,sF32 ry,sF32 sx,sF32 sy,sU32 color,sF32 alpha,sF32 power,sU32 wrap,sU32 bugfix);
GenBitmap * __stdcall Bitmap_Dots(GenBitmap *bm,sU32 color0,sU32 color1,sInt count,sInt seed);
GenBitmap * __stdcall Bitmap_Blur(GenBitmap *bm,sInt order,sF32 sx,sF32 sy,sF32 amp);
GenBitmap * __stdcall Bitmap_Mask(GenBitmap *bm,GenBitmap *bb,GenBitmap *bc,sInt mask);
GenBitmap * __stdcall Bitmap_HSCB(GenBitmap *bm,sF32 h,sF32 s,sF32 c,sF32 b);
GenBitmap * __stdcall Bitmap_Rotate(GenBitmap *bm,sF32 angle,sF32 sx,sF32 sy,sF32 tx,sF32 ty,sInt border,sInt newWidth,sInt newHeight);
GenBitmap * __stdcall Bitmap_RotateMul(GenBitmap *bm,sF32 angle,sF32 sx,sF32 sy,sF32 tx,sF32 ty,sInt border,sU32 color,sInt mode,sInt count,sU32 fade);
GenBitmap * __stdcall Bitmap_Distort(GenBitmap *bm,GenBitmap *bb,sF32 dist,sInt border);
GenBitmap * __stdcall Bitmap_Normals(GenBitmap *bm,sF32 dist,sInt mode);
GenBitmap * __stdcall Bitmap_Light(GenBitmap *bm,sInt subcode,sF32 px,sF32 py,sF32 pz,sF32 da,sF32 db,
sU32 diff,sU32 ambi,sF32 outer,sF32 falloff,sF32 amp);
GenBitmap * __stdcall Bitmap_Bump(GenBitmap *bm,GenBitmap *bb,sInt subcode,sF32 px,sF32 py,sF32 pz,sF32 da,sF32 db,
sU32 diff,sU32 ambi,sF32 outer,sF32 falloff,sF32 amp,
sU32 spec,sF32 spow,sF32 samp);
GenBitmap * __stdcall Bitmap_Text(KOp *,KEnvironment *,GenBitmap *bm,sF32 x,sF32 y,sF32 width,sF32 height,sU32 col,sU32 flags,sInt extspace,sF32 intspace,sF32 lineskip,sChar *text,sChar *font);
GenBitmap * __stdcall Bitmap_Perlin(sInt xs,sInt ys,sInt freq,sInt oct,sF32 fadeoff,sInt seed,sInt mode,sF32 amp,sF32 gamma,sU32 col0,sU32 col1);
GenBitmap * __stdcall Bitmap_Cell(sInt xs,sInt ys,sU32 col0,sU32 col1,sU32 col2,sInt count,sInt seed,sF32 amp,sF32 gamma,sInt mode,sF32 mindist,sInt percent,sF32 aspect);
GenBitmap * __stdcall Bitmap_Wavelet(GenBitmap *bm,sInt mode,sInt count);
GenBitmap * __stdcall Bitmap_Gradient(sInt xs,sInt ys,sU32 col0,sU32 col1,sF32 pos,sF32 angle,sF32 length,sInt mode);
GenBitmap * __stdcall Bitmap_Twirl(GenBitmap *bm,sF32 strength,sF32 gamma,sF32 rx,sF32 ry,sF32 cx,sF32 cy,sInt border);
GenBitmap * __stdcall Bitmap_Sharpen(GenBitmap *bm,sInt order,sF32 sx,sF32 sy,sF32 amp);
GenBitmap * __stdcall Bitmap_Import(KOp *op,sChar *filename);
GenBitmap * __stdcall Bitmap_ColorBalance(GenBitmap *bm,sF323 shadows,sF323 midtones,sF323 highlights);
GenBitmap * __stdcall Bitmap_Unwrap(GenBitmap *bm,sInt mode);
GenBitmap * __stdcall Bitmap_Bricks(sInt bmxs,sInt bmys,sInt color0,sInt color1,sInt colorf,sF32 fugex,sF32 fugey,sInt tx,sInt ty,sInt seed,sInt heads,sInt flags,sF32 side,sF32 colorbalance);
GenBitmap * __stdcall Bitmap_Bulge(GenBitmap *bm,sF32 warp);
#if sLINK_ENGINE
GenBitmap * __stdcall Bitmap_Render(KOp *op,class GenIPP *ipp,sInt xs,sInt ys);
GenBitmap * __stdcall Bitmap_RenderAuto(KOp *op,class GenMinMesh *mesh,sInt xs,sInt ys,sInt flags);
void _stdcall Exec_Bitmap_Render(sInt xs,sInt ys);
void _stdcall Exec_Bitmap_RenderAuto(sInt xs,sInt ys,sInt flags);
#endif
GenBitmap * __stdcall Bitmap_Export(GenBitmap *bm,sChar *filename);
GenBitmap * __stdcall Bitmap_Paste(GenBitmap *bm,GenBitmap *bs,sF322 pre,sF322 pos,sF322 size,sF32 angle,sInt mode);
extern sInt GenBitmapTextureSizeOffset; // 0 = normal, -1 = smaller, 1 = large
/****************************************************************************/
/****************************************************************************/
}
#endif