int RM_init(void);
void RM_end(void);

void RM_getHyper(int objId, HYPER *hyp);
void RM_setHyper(int objId, HYPER *hyp);
void RM_setChColor(int idObj, int col);
void RM_getFrame(int idObj, FRAME *fr);
void RM_setFrame(int id, FRAME *fr);
void RM_offsetFrame(int id,int dx,int dy);
void RM_moveCenter(int objId);
void RM_raise(int kobj);
int	 RM_isTopInBros(int kobj);
void RM_getMoveFrame(FRAME *fr);
void RM_getWinUserFrame(int id, FRAME *user);
void RM_roundFramePosition(int idWin, int nx, int ny);

void RM_setOriginZero(void);
void RM_recoverOrigin(void);

void RM_setClipVisibleAllScr(void);
void	RM_setClipAnyFrame(int id, FRAME *fr);
void RM_recoverClipVisible(void);
void RM_setClipWinUser(int idWin, WINCLIP **clipstack);
void RM_resetClipWinUser(WINCLIP *clipstack);

void RM_adjustFrame(int kobj, int baseobj, FRAME *parm);
void RM_adjustWinUser(int idWin, FRAME *parm);

// ダイアログ関連

void RM_setFileDlgStyle(int style);
int RM_callSimpleFDG(int baseId, int noselId,
					 char *title,char *ok,char *cancel,
					 char *wildext, int flag, char* init_pathname,
					 char *pathbuf);
	// flag: FDG_NONE, FDG_MSLCT, FDG_TEXT など

void RM_execDialog(int idDlg, int idAlertAttachHyp, int idSelectiveHyp);

void RM_putstring12(char *egbwork, int x,int y, char *str, int col, int bold);

void	RM_setScrollRange(int idSBar, int nDisp, int nAll, int bRedraw);
void	RM_setScrollPos(int idSBar, int nPos, int bRedraw);
int		RM_getScrollPos(int idSBar);

void RM_setNumBoxValue(int id, int n, int bRedraw);
int RM_getNumBoxValue(int id);

void RM_initRadioButton(int *idBtnAry, int btnNum, int *sel);
void RM_pushRadioButton(int idBtn,int idBase,
						int *idBtnAry, int btnNum, int *sel);
// void RM_putblock32k(char *buf, int x,int y,int width,int height);

int RM_getObjFromPoint(POINT* pt);
int RM_getObjWhereIs(int x,int y);
void RM_getScreenSize(int *wid, int *ht);

#define	MOSICON_ARROW	80	/* 通常の矢印マーク */
#define	MOSICON_WAIT	81	/* 時計のマーク */
#define	MOSICON_DRAG	83	/* てのひらマーク */
#define	MOSICON_PICK	84	/* ピンセット形状 */
#define	MOSICON_POINT	85	/* スポイトマーク */
#define	MOSICON_FINGER	86	/* 指マーク */
#define	MOSICON_BRUSH	87	/* 筆マーク */
#define	MOSICON_CUTTER	88	/* カッター */

#define	RMcol	MG_colorChange

#define	RM_moveFrameTo( fr, x, y )   ((*(fr)).rdwx += (x) - (*(fr)).lupx, \
                                      (*(fr)).rdwy += (y) - (*(fr)).lupy, \
                                      (*(fr)).lupx = (x), \
                                      (*(fr)).lupy = (y) )

#define	INTNUM(array)		(sizeof(array) / sizeof(int))

#define PARENT(id)	(TL_getObjectPtr(id)->base)

#define BEGINPAINT(kobj)					\
  { MG_mosDisp(2);							\
	RM_setOriginZero();						\
	WINCLIP *_pClipStack;					\
	RM_setClipVisibleAllScr();				\
	RM_setClipWinUser(kobj, &_pClipStack);

#define ENDPAINT							\
	RM_resetClipWinUser(_pClipStack);		\
	RM_recoverClipVisible();			\
	RM_recoverOrigin();						\
	MG_mosDisp(3); }

#define	TIFFERR_NOMEMORY		-1
#define	TIFFERR_INVALIDFORMAT	-2
#define	TIFFERR_NODISKSPACE		-3
#define	TIFFERR_CANNOTOPEN		-4
#define	TIFFERR_OTHERS			-5

typedef struct {
	int wid,ht;
	int pixelsize;
	BOOL compress;
} TIFFINFO;

int RM_loadTIFF(char *fname,
	int funcPutImage(char *buf, int ofsy, int ht),
	int funcSetPalette(char *buf, int pltnum));
int RM_saveTIFF(char *fname,int pixelsize,int wid,int ht,
				BOOL fComp,
				int funcGetImage(char *buf,int ofsy,int ht),
				int funcGetPalette(char *buf));
int RM_getTIFFinfo(char *fname, TIFFINFO *info);
// これら３つの関数の返値は、NOERR / TIFFERR_...
