home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
art2
/
src.lzh
/
PIC.H
< prev
next >
Wrap
C/C++ Source or Header
|
1995-06-19
|
3KB
|
103 lines
#ifndef HEADER_PIC
#define HEADER_PIC
#include "screen.h"
#include "pen.h"
#include "area.h"
/* 画像 */
typedef struct {
int wid,ht;
char *buf;
FRAME update;
int pixelsize;
} PIC;
/* ピクセルの色 */
typedef struct {
char r,g,b;
} PIXEL;
int pic_init(void);
void pic_close(void);
PIC *pic_new(int pixelsize,int width,int height);
PIC* pic_dup(PIC* pic);
void pic_destroy(PIC *pic);
#define pic_delete pic_destroy
void pic_setPixelXy(PIC *pic, int x, int y, PIXEL *pixel);
void pic_getPixelXy(PIC *pic, int x, int y, PIXEL *pixel);
void pic_grayPset(PIC* pic,int x,int y,int gray,PIXEL *pixel);
void pic_grayhline(PIC *pic,int x1,int x2,int y,int gray,PIXEL *pixel);
void pic_psetpen(PIC *pic,int x,int y,Pen pen,PIXEL *pixel);
void pic_putGrayBlock(PIC *pic,int x,int y,
char *graypat,int wid,int ht, PIXEL *pixel);
void pic_clear(PIC *pic, PIXEL *pixel);
void pic_kosuriStart(PIC* pic,int x,int y,char* graypat,int wid,int ht);
void pic_kosuriDrag(PIC* pic,int x,int y,int r);
void pic_beginUpDate(PIC *pic);
void pic_endUpDate(PIC *pic, FRAME *frame);
void pic_copy(PIC* picSrc, FRAME* frSrc, PIC* picDest, POINT* ptDest);
// update 管理を忘れないこと!
void pic_copyarea(PIC* picSrc, AREA areaSrc, PIC* picDest, POINT* ptDest);
void pic_paint(PIC *pic, int x,int y, PIXEL* pix);
void pic_blot(PIC *pic,int x,int y,int branch,int depth,PIXEL* pix);
void pic_diffusePen(PIC* pic,int x,int y,Pen pen);
void pic_sandPen(PIC* pic,int x,int y,Pen pen);
void pic_polygon(PIC* pic,POINT* points,int nPoint,PIXEL* pix);
void pic_fillarea(PIC* pic,AREA area,PIXEL* pix);
int pic_loadTIFF_(PIC *pic, char *fname);
int pic_saveTIFF_(PIC *pic, char *fname);
// void pic_getRectImage( PIC *pic, char *buf, FRAME *fr );
void pic_getScrBitMap(PIC* pic, SCRBITMAP bm, int ofsx, int ofsy, FRAME *fr,
int zoom);
// 画像内の fr(x,y,wid,ht) の領域を bm の ofsx, ofsy に転送する
#define pic_getScrBitmap pic_getScrBitMap
void pixel_setRgb(PIXEL *pixel, int r, int g, int b);
void pixel_getRgb(PIXEL *pixel, int *r, int *g, int *b);
#define PICOFFSET(pic,x,y) (((pic)->wid*(y)+(x))*(pic)->pixelsize /8)
#define PICADDR(pic,x,y) ((pic)->buf + PICOFFSET(pic,x,y))
#define CODE32K(pix) \
((((unsigned int)(pix).r >> 3) << 5) | \
(((unsigned int)(pix).g >> 3) << 10) | \
(((unsigned int)(pix).b >> 3)))
#define CODE16M(pix) \
(((uint)(pix).g << 8) | ((uint)(pix).r) | ((uint)(pix).b << 16))
#define SETBYTE3(p,n) \
(*(ushort*)(p)=(ushort)((uint)(n) & 0xffff), \
*(((char*)(p))+2) = ((uint)(n)>>16)&0xff)
#define GETBYTE3(p) (*(ushort*)(p)) | (((uint)*((char*)(p)+2)) << 16)
#define GET3BYTE(ptr,a,b,c) ((a)=(ptr)[0],(b)=(ptr)[1],(c)=(ptr)[2])
#define COLCODE(pix) (scrPixelSize==16 ? CODE32K(pix) : CODE16M(pix))
#define SETRGB32K(pix, col) \
((pix).r = ((((col) >> 5) & 31) * 255 + 15) / 31, \
(pix).g = ((((col) >> 10) & 31) * 255 + 15) / 31, \
(pix).b = ((((col) ) & 31) * 255 + 15) / 31)
#define GETRGB31(code,r,g,b) \
((g) = ((uint)code >> 10) & 31, \
(r) = ((uint)code >> 5) & 31, \
(b) = ((uint)code) & 31)
#define SETRGB31(code,r,g,b) \
((code) = ((uint)(g)<<10) | ((uint)(r)<<5) | ((uint)b))
#endif HEADER_PIC