mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-22 18:31:27 +00:00
add the draw api interface with a QPic class
This commit is contained in:
parent
8a431570b8
commit
5a9e5277c9
4 changed files with 144 additions and 2 deletions
|
@ -5,4 +5,4 @@ include_HEADERS = \
|
|||
object.h physics.h qw_message.h qw_physics.h qw_sys.h sound.h \
|
||||
string.h system.h \
|
||||
\
|
||||
inputline.h point.h
|
||||
draw.h inputline.h point.h
|
||||
|
|
39
ruamoko/include/draw.h
Normal file
39
ruamoko/include/draw.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
#ifndef __ruamoko_draw_h
|
||||
#define __ruamoko_draw_h
|
||||
|
||||
#include "object.h"
|
||||
|
||||
struct _qpic_t = {
|
||||
integer width;
|
||||
integer height;
|
||||
};
|
||||
typedef _qpic_t [] qpic_t;
|
||||
|
||||
@extern qpic_t (string name, integer alpha) Draw_CachePic;
|
||||
|
||||
@extern void (integer x, integer y, qpic_t pic) Draw_Pic;
|
||||
@extern void (integer x, integer y, qpic_t pic, integer srcx, integer srcy, integer width, integer height) Draw_SubPic;
|
||||
@extern void (integer x, integer y, qpic_t pic) Draw_CenterPic;
|
||||
|
||||
@extern void (integer x, integer y, integer chr) Draw_Character;
|
||||
@extern void (integer x, integer y, string text) Draw_String;
|
||||
@extern void (integer x, integer y, string text, integer n) Draw_nString;
|
||||
@extern void (integer x, integer y, string text) Draw_AltString;
|
||||
@extern void (integer x, integer y, integer w, integer h, integer c) Draw_Fill;
|
||||
@extern void (integer x, integer y, integer width, integer lines) text_box;
|
||||
|
||||
@interface QPic : Object
|
||||
{
|
||||
string name;
|
||||
_qpic_t size;
|
||||
BOOL centered;
|
||||
}
|
||||
-initName:(string)n;
|
||||
-initName:(string)n Centered:(BOOL)c;
|
||||
-draw:(integer)x :(integer)y;
|
||||
-draw:(integer)x :(integer)y :(integer)srcx :(integer)srcy :(integer)width :(integer)height;
|
||||
-(integer)width;
|
||||
-(integer)height;
|
||||
@end
|
||||
|
||||
#endif//__ruamoko_draw_h
|
|
@ -24,7 +24,7 @@ libr_a_SOURCES=\
|
|||
libr_a_AR=$(PAK) -cf
|
||||
|
||||
libgui_a_SOURCES=\
|
||||
inputline.r point.r
|
||||
draw.r inputline.r point.r
|
||||
libgui_a_AR=$(PAK) -cf
|
||||
|
||||
CLEANFILES = *.qfo
|
||||
|
|
103
ruamoko/lib/draw.r
Normal file
103
ruamoko/lib/draw.r
Normal file
|
@ -0,0 +1,103 @@
|
|||
#include "draw.h"
|
||||
|
||||
qpic_t (string name, integer alpha) Draw_CachePic = #0;
|
||||
|
||||
void (integer x, integer y, qpic_t pic) Draw_Pic = #0;
|
||||
void (integer x, integer y, qpic_t pic, integer srcx, integer srcy, integer width, integer height) Draw_SubPic = #0;
|
||||
void (integer x, integer y, qpic_t pic) Draw_CenterPic = #0;
|
||||
|
||||
void (integer x, integer y, integer chr) Draw_Character = #0;
|
||||
void (integer x, integer y, string text) Draw_String = #0;
|
||||
void (integer x, integer y, string text, integer n) Draw_nString = #0;
|
||||
void (integer x, integer y, string text) Draw_AltString = #0;
|
||||
void (integer x, integer y, integer w, integer h, integer c) Draw_Fill = #0;
|
||||
|
||||
void (integer x, integer y, integer width, integer lines) text_box =
|
||||
{
|
||||
local integer cx, cy, n;
|
||||
local qpic_t p;
|
||||
|
||||
cx = x;
|
||||
cy = y;
|
||||
p = Draw_CachePic ("gfx/box_tl.lmp", 1);
|
||||
Draw_Pic (cx, cy, p);
|
||||
p = Draw_CachePic ("gfx/box_ml.lmp", 1);
|
||||
for (n = 0; n < lines; n++) {
|
||||
cy += 8;
|
||||
Draw_Pic (cx, cy, p);
|
||||
}
|
||||
p = Draw_CachePic ("gfx/box_bl.lmp", 1);
|
||||
Draw_Pic (cx, cy + 8, p);
|
||||
|
||||
cx += 8;
|
||||
while (width > 0) {
|
||||
cy = y;
|
||||
p = Draw_CachePic ("gfx/box_tm.lmp", 1);
|
||||
Draw_Pic (cx, cy, p);
|
||||
p = Draw_CachePic ("gfx/box_mm.lmp", 1);
|
||||
for (n = 0; n < lines; n++) {
|
||||
cy += 8;
|
||||
if (n == 1)
|
||||
p = Draw_CachePic ("gfx/box_mm2.lmp", 1);
|
||||
Draw_Pic (cx, cy, p);
|
||||
}
|
||||
p = Draw_CachePic ("gfx/box_bm.lmp", 1);
|
||||
Draw_Pic (cx, cy + 8, p);
|
||||
width -= 2;
|
||||
cx += 16;
|
||||
}
|
||||
|
||||
cy = y;
|
||||
p = Draw_CachePic ("gfx/box_tr.lmp", 1);
|
||||
Draw_Pic (cx, cy, p);
|
||||
p = Draw_CachePic ("gfx/box_mr.lmp", 1);
|
||||
for (n = 0; n < lines; n++) {
|
||||
cy += 8;
|
||||
Draw_Pic (cx, cy, p);
|
||||
}
|
||||
p = Draw_CachePic ("gfx/box_br.lmp", 1);
|
||||
Draw_Pic (cx, cy + 8, p);
|
||||
};
|
||||
|
||||
@implementation QPic
|
||||
|
||||
-initName:(string)n
|
||||
{
|
||||
return [self initName:n Centered:NO];
|
||||
}
|
||||
|
||||
-initName:(string)n Centered:(BOOL)c
|
||||
{
|
||||
[super init];
|
||||
name = n;
|
||||
local qpic_t pic = Draw_CachePic (name, 1);
|
||||
size.width = pic.width;
|
||||
size.height = pic.height;
|
||||
return self;
|
||||
}
|
||||
|
||||
-draw:(integer)x :(integer)y
|
||||
{
|
||||
local qpic_t pic = Draw_CachePic (name, 1);
|
||||
Draw_Pic (x, y, pic);
|
||||
return self;
|
||||
}
|
||||
|
||||
-draw:(integer)x :(integer)y :(integer)srcx :(integer)srcy :(integer)width :(integer)height
|
||||
{
|
||||
local qpic_t pic = Draw_CachePic (name, 1);
|
||||
Draw_SubPic (x, y, pic, srcx, srcy, width, height);
|
||||
return self;
|
||||
}
|
||||
|
||||
-(integer)width
|
||||
{
|
||||
return size.width;
|
||||
}
|
||||
|
||||
-(integer)height
|
||||
{
|
||||
return size.height;
|
||||
}
|
||||
|
||||
@end
|
Loading…
Reference in a new issue