home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
art2
/
src.lzh
/
IMGBOX.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-06-17
|
3KB
|
118 lines
/*====================================================
ARTemis
(version 1.3)
FM-TOWNS 用ペイントツール
by 松内 良介 1994
====================================================*/
/*
IMGBOX.C : IMGBOX(イメージボックス)型部品・実現モジュール
外部関数:
int MMI_initImageBox(void)
*/
#define MODULE_IMGBOX
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "art.h"
int MJ_IMGBOX = -1;
/* 表示処理 */
static int ML_IMGBOXdisp(kobj, messId, argc)
int kobj ;
int messId ;
int argc ;
{
register IMGBOX *plbl ; IMGBOX lbl ;
lbl = *(plbl = ((IMGBOX *)(TL_getObjectPtr(kobj)->data))) ;
if (lbl.func == (int(*)())NULL)
return NOERR;
/* 部品の位置を得る */
MG_CorrectPositionL40(&(lbl.fr), (HYPER *)plbl) ;
/* 最描画する必要があるか? */
if (MMI_CheckUpdateFrame(&(lbl.fr)))
{
POINT new,old;
MG_mosDisp(2) ;
new.x = new.y = 0;
MG_PushOrigin(&new, &old);
(*lbl.func)(kobj, MM_SHOW, 0);
MG_PopOrigin(&old);
MG_mosDisp(3) ;
}
/* おわり */
return NOERR ;
}
/* 再描画関数の登録 */
static int ML_IMGBOXsetexec(kobj, messId, argc, func)
int kobj ;
int messId ;
int argc ;
int (*func)();
{
IMGBOX *plbl ;
plbl = (IMGBOX *) ( TL_getObjectPtr(kobj) -> data ) ;
plbl->func = func ;
return NOERR ;
}
/* メッセージに対する関数の対応 */
#define NMET_IMGBOX 2
static int (*MF_IMGBOXmethod[NMET_IMGBOX])() = {
ML_IMGBOXdisp,
ML_IMGBOXsetexec
} ;
static char *MM_IMGBOXmessage[NMET_IMGBOX] = {
MT_SHOW,
MT_SETEXEC
};
/* 初期化関数 */
int MMI_initImageBox(void)
{
MJ_IMGBOX = MMI_AddType(MJ_HYPER, NMET_IMGBOX,
sizeof(IMGBOX),
MF_IMGBOXmethod,
MM_IMGBOXmessage) ;
if (MJ_IMGBOX < NOERR)
return MJ_IMGBOX ;
return NOERR ;
}
/* 部品のひな型を作る関数 */
#define ALIGN 4
#define OFFSET(type) \
(sizeof(MMIPACKET) + (sizeof(type)+ALIGN-1)/ALIGN*ALIGN)
int IMGBOX_makePrototype(int *objId)
{
static int tempId;
static MMIINIT initDataIMGBOX = { "MmiInit", 1, 0 } ;
static MMIPACKET d001 = { &tempId, NULL, &MJ_IMGBOX,
OFFSET(IMGBOX), MS_NONE };
static IMGBOX d001d = { MS_DSPONLYL40, 0,0,47,47, 0,0,0,
MS_NONEL40, (int(*)())NULL };
int ret;
if ((ret = MMI_Init(&initDataIMGBOX)) < NOERR)
return ret ;
*objId = tempId;
return NOERR;
}