home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
art2
/
src.lzh
/
IMAGEWIN.H
< prev
next >
Wrap
C/C++ Source or Header
|
1995-06-18
|
4KB
|
110 lines
#ifndef HEADER_IMWIN
#define HEADER_IMWIN
#include "pic.h"
#include "screen.h"
#include "fifo.h"
/* 画像ウィンドウ */
#define IMAGEWIN_TITLE 129
typedef struct _imw {
struct _imw *next;
/* 各部品ID */
int win; /* ウィンドウ部品の */
int sbar_h;
int sbar_v;
// int btn; /* 描画領域用ボタン */
int erasebtn;
int titlebar;
int titlemsg;
char title[IMAGEWIN_TITLE+1];
char fname[_MAX_PATH];
PIC *pic;
SCRBITMAP bm; // 画面出力用ビットマップ
int zoom; // 拡大率
BOOL fBoxRubber;
FRAME frBoxRubber; // BOXラバーの PIC 領域(x,y,wid,ht)
BOOL fBoxRubber2;
FRAME frBoxRubber2; // BOXラバー2
BOOL fLineRubber;
LIST* listLineRubber;
BOOL fLineRubber2;
LIST* listLineRubber2;
} IMWIN;
// モジュール初期化
int imagewin_init(void);
// 生成・消滅
IMWIN *imagewin_new(int pixelsize,int width, int height);
void imagewin_destroy(IMWIN *win);
// リンク関連
IMWIN *imagewin_getfirst(void);
IMWIN *imagewin_getnext(void);
void imagewin_link(IMWIN *win);
void imagewin_unlink(IMWIN *win);
void imagewin_show(IMWIN *win);
IMWIN *imagewin_getWinFromPart(int objId);
// オブジェクトIDからウィンドウを検索する
IMWIN *imagewin_getCurrentWin(void);
void imagewin_setCurrentWin(IMWIN *win);
// 座標変換
void imagewin_getScrFrame(IMWIN *win, FRAME *frPic, FRAME *frBitmap);
// PIC領域(x,y,wid,ht)から、SCRBITMAP領域(x,y,wid,ht)へと変換
void imagewin_getDispFrame(IMWIN *win,FRAME* frPic);
// ウィンドウのユーザー領域を、表示画像の PIC 領域(x,y,wid,ht)に変換
void imagewin_getPosFromMos(IMWIN *win, POINT *mos, POINT *pos);
// 画面上のマウス座標から、画像内での位置を得る
BOOL imagewin_PtInPic(IMWIN* win, POINT* pt);
// 画面座標 pt がウィンドウ内の画像領域にあるかどうか
// 表示内容更新
void imagewin_updateBuf(IMWIN *win);
// PIC内容から、SCRBITMAP全体を再生成する
void imagewin_updateScr(IMWIN *win);
// SCRBITMAPの内容を画面に表示。同時にラバー描画も行う
void imagewin_updateScrPart(IMWIN *win, FRAME *updatefr);
// PIC領域 updatefr に対応する SCRBITMAP / 画面を更新する
// ラバー制御
void imagewin_setBoxRubber(IMWIN* win, FRAME *fr);
// fr : PIC領域(x,y,wid,ht)
void imagewin_setBoxRubber2(IMWIN* win, FRAME *fr);
void imagewin_clearBoxRubber(IMWIN* win);
void imagewin_clearBoxRubber2(IMWIN* win);
void imagewin_resetLineRubber(IMWIN* win);
void imagewin_addLineRubber(IMWIN* win,POINT* p1,POINT* p2);
// p1,p2 : PIC 座標 p2 が NULL のとき、リストの最初の点とむすぶ
int imagewin_nLineRubber(IMWIN* win);
void imagewin_clearLineRubber(IMWIN* win);
void imagewin_resetLineRubber2(IMWIN* win);
void imagewin_addLineRubber2(IMWIN* win,POINT* p1,POINT* p2);
// p1,p2 : PIC 座標 p2 が NULL のとき、リストの最初の点とむすぶ
int imagewin_nLineRubber2(IMWIN* win);
void imagewin_clearLineRubber2(IMWIN* win);
// リサイズ処理
int imagewin_resize(IMWIN *win, BOOL fRedraw);
// 子ウィンドウの再配置
void imagewin_setZoom(IMWIN *win, int zoom);
void imagewin_updateTitle(IMWIN *win, BOOL fShow);
void imagewin_setFileName(IMWIN *win, char *fname, BOOL fShow);
// 画像編集
void imagewin_storeUndo(IMWIN* win);
void imagewin_recoverUndo(void);
void imagewin_copy(IMWIN* srcwin,FRAME* frSrc,
IMWIN* destwin,POINT *ptDest);
// frSrc:PIC領域(x,y,wid,ht)
// ptDest:PIC座標
void imagewin_copyarea(IMWIN* srcwin,AREA areaSrc,
IMWIN* destwin,POINT *ptDest);
#define BAR_SIZE 16
#endif HEADER_IMWIN