about summary refs log tree commit diff
path: root/src/engine/e_if_gfx.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/e_if_gfx.h')
-rw-r--r--src/engine/e_if_gfx.h578
1 files changed, 578 insertions, 0 deletions
diff --git a/src/engine/e_if_gfx.h b/src/engine/e_if_gfx.h
new file mode 100644
index 00000000..d49a3cda
--- /dev/null
+++ b/src/engine/e_if_gfx.h
@@ -0,0 +1,578 @@
+/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */
+#ifndef ENGINE_IF_GFX_H
+#define ENGINE_IF_GFX_H
+
+/*
+	Section: Structures
+*/
+
+/*
+	Structure: IMAGE_INFO
+*/
+typedef struct
+{
+	/* Variable: width
+		Contains the width of the image */
+	int width;
+	
+	/* Variable: height
+		Contains the height of the image */
+	int height;
+	
+	/* Variable: format
+		Contains the format of the image. See <Image Formats> for more information. */
+	int format;
+
+	/* Variable: data
+		Pointer to the image data. */
+	void *data;
+} IMAGE_INFO;
+
+/*
+	Structure: VIDEO_MODE
+*/
+typedef struct 
+{
+	int width, height;
+	int red, green, blue;
+} VIDEO_MODE;
+
+/*
+	Section: Functions
+*/
+
+/*
+	Group: Quads
+*/
+
+/*
+	Function: gfx_quads_begin
+		Begins a quad drawing session.
+		
+	Remarks:
+		This functions resets the rotation, color and subset.
+		End the session by using <gfx_quads_end>.
+		You can't change texture or blending mode during a session.
+		
+	See Also:
+		<gfx_quads_end>
+*/
+void gfx_quads_begin();
+
+/*
+	Function: gfx_quads_end
+		Ends a quad session.
+		
+	See Also:
+		<gfx_quads_begin>
+*/
+void gfx_quads_end();
+
+/*
+	Function: gfx_quads_setrotation
+		Sets the rotation to use when drawing a quad.
+		
+	Arguments:
+		angle - Angle in radians.
+		
+	Remarks:
+		The angle is reset when <gfx_quads_begin> is called.
+*/
+void gfx_quads_setrotation(float angle);
+
+/*
+	Function: gfx_quads_setsubset
+		Sets the uv coordinates to use.
+		
+	Arguments:
+		tl_u - Top-left U value.
+		tl_v - Top-left V value.
+		br_u - Bottom-right U value.
+		br_v - Bottom-right V value.
+		
+	Remarks:
+		O,0 is top-left of the texture and 1,1 is bottom-right.
+		The color is reset when <gfx_quads_begin> is called.
+*/
+void gfx_quads_setsubset(float tl_u, float tl_v, float br_u, float br_v);
+
+/*
+	Function: gfx_quads_setsubset_free
+		TODO
+		
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_quads_setsubset_free(
+	float x0, float y0,
+	float x1, float y1,
+	float x2, float y2,
+	float x3, float y3);
+
+/*
+	Function: gfx_quads_drawTL
+		Draws a quad by specifying the top-left point.
+		
+	Arguments:
+		x - X coordinate of the top-left corner.
+		y - Y coordinate of the top-left corner.
+		width - Width of the quad.
+		height - Height of the quad.
+		
+	Remarks:
+		Rotation still occurs from the center of the quad.
+		You must call <gfx_quads_begin> before calling this function.
+
+	See Also:
+		<gfx_quads_draw, gfx_quads_draw_freeform>
+*/
+void gfx_quads_drawTL(float x, float y, float width, float height);
+
+/*
+	Function: gfx_quads_draw
+		Draws a quad by specifying the center point.
+		
+	Arguments:
+		x - X coordinate of the center.
+		y - Y coordinate of the center.
+		width - Width of the quad.
+		height - Height of the quad.
+
+	Remarks:
+		You must call <gfx_quads_begin> before calling this function.
+
+	See Also:
+		<gfx_quads_drawTL, gfx_quads_draw_freeform>
+*/
+void gfx_quads_draw(float x, float y, float w, float h);
+
+/*
+	Function: gfx_quads_draw_freeform
+		Draws a quad by specifying the corner points.
+	
+	Arguments:
+		x0, y0 - Coordinates of the upper left corner.
+		x1, y1 - Coordinates of the upper right corner.
+		x2, y2 - Coordinates of the lower left corner. // TODO: DOUBLE CHECK!!!
+		x3, y3 - Coordinates of the lower right corner. // TODO: DOUBLE CHECK!!!
+	
+	See Also:
+		<gfx_quads_draw, gfx_quads_drawTL>
+*/
+void gfx_quads_draw_freeform(
+	float x0, float y0,
+	float x1, float y1,
+	float x2, float y2,
+	float x3, float y3);
+
+/*
+	Function: gfx_quads_text
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_quads_text(float x, float y, float size, const char *text);
+
+/*
+	Group: Lines
+*/
+
+/*
+	Function: gfx_lines_begin
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_lines_begin();
+
+/*
+	Function: gfx_lines_draw
+		TODO
+		
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_lines_draw(float x0, float y0, float x1, float y1);
+
+/*
+	Function: gfx_lines_end
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_lines_end();
+
+/*
+	Group: Text
+*/
+
+
+/*
+	Function: gfx_text
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_text(void *font, float x, float y, float size, const char *text, int max_width);
+
+/*
+	Function: gfx_text_width
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+float gfx_text_width(void *font, float size, const char *text, int length);
+
+/*
+	Function: gfx_text_color
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_text_color(float r, float g, float b, float a);
+
+/*
+	Function: gfx_text_set_default_font
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_text_set_default_font(void *font);
+
+/*
+	Group: Other
+*/
+
+/*
+	Function: gfx_get_video_modes
+		Fetches a list of all the available video modes.
+		
+	Arguments:
+		list - An array to recive the modes. Must be able to contain maxcount number of modes.
+		maxcount - The maximum number of modes to fetch.
+	
+	Returns:
+		The number of video modes that was fetched.
+*/
+int gfx_get_video_modes(VIDEO_MODE *list, int maxcount);
+
+/* image loaders */
+
+/*
+	Function: gfx_load_png
+		Loads a PNG image from disk.
+	
+	Arguments:
+		img - Pointer to an structure to be filled out with the image information.
+		filename - Filename of the image to load.
+	
+	Returns:
+		Returns non-zero on success and zero on error.
+	
+	Remarks:
+		The caller are responsible for cleaning up the allocated memory in the IMAGE_INFO structure.
+	
+	See Also:
+		<gfx_load_texture>
+*/
+int gfx_load_png(IMAGE_INFO *img, const char *filename);
+
+/* textures */
+/*
+	Function: gfx_load_texture
+		Loads a texture from a file. TGA and PNG supported.
+	
+	Arguments:
+		filename - Null terminated string to the file to load.
+		store_format - What format to store on gfx card as.
+	
+	Returns:
+		An ID to the texture. -1 on failure.
+
+	See Also:
+		<gfx_unload_texture, gfx_load_png>
+*/
+int gfx_load_texture(const char *filename, int store_format);
+
+/*
+	Function: gfx_load_texture_raw
+		Loads a texture from memory.
+	
+	Arguments:
+		w - Width of the texture.
+		h - Height of the texture.
+		data - Pointer to the pixel data.
+		format - Format of the pixel data.
+		store_format - The format to store the texture on the graphics card.
+	
+	Returns:
+		An ID to the texture. -1 on failure.
+		
+	Remarks:
+		The pixel data should be in RGBA format with 8 bit per component.
+		So the total size of the data should be w*h*4.
+		
+	See Also:
+		<gfx_unload_texture>
+*/
+int gfx_load_texture_raw(int w, int h, int format, const void *data, int store_format);
+
+/*
+	Function: gfx_texture_set
+		Sets the active texture.
+	
+	Arguments:
+		id - ID to the texture to set.
+*/
+void gfx_texture_set(int id);
+
+/*
+	Function: gfx_unload_texture
+		Unloads a texture.
+	
+	Arguments:
+		id - ID to the texture to unload.
+		
+	See Also:
+		<gfx_load_texture_tga>, <gfx_load_texture_raw>
+		
+	Remarks:
+		NOT IMPLEMENTED
+*/
+int gfx_unload_texture(int id);
+
+/*
+	Function: gfx_clear
+		Clears the screen with the specified color.
+	
+	Arguments:
+		r - Red component.
+		g - Green component.
+		b - Red component.
+	
+	Remarks:
+		The value of the components are given in 0.0 - 1.0 ranges.
+*/
+void gfx_clear(float r, float g, float b);
+
+/*
+	Function: gfx_screenaspect
+		Returns the aspect ratio between width and height.
+
+	See Also:
+		<gfx_screenwidth>, <gfx_screenheight>
+*/
+float gfx_screenaspect();
+
+/*
+	Function: gfx_screenwidth
+		Returns the screen width.
+	
+	See Also:
+		<gfx_screenheight>
+*/
+int gfx_screenwidth();
+
+/*
+	Function: gfx_screenheight
+		Returns the screen height.
+	
+	See Also:
+		<gfx_screenwidth>
+*/
+int gfx_screenheight();
+
+/*
+	Function: gfx_mapscreen
+		Specifies the coordinate system for the screen.
+		
+	Arguments:
+		tl_x - Top-left X
+		tl_y - Top-left Y
+		br_x - Bottom-right X
+		br_y - Bottom-right y
+*/
+void gfx_mapscreen(float tl_x, float tl_y, float br_x, float br_y);
+
+/*
+	Function: gfx_blend_normal
+		Set the active blending mode to normal (src, 1-src).
+
+	Remarks:
+		This must be used before calling <gfx_quads_begin>.
+		This is equal to glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA).
+	
+	See Also:
+		<gfx_blend_additive>
+*/
+void gfx_blend_normal();
+
+/*
+	Function: gfx_blend_additive
+		Set the active blending mode to additive (src, one).
+
+	Remarks:
+		This must be used before calling <gfx_quads_begin>.
+		This is equal to glBlendFunc(GL_SRC_ALPHA, GL_ONE).
+	
+	See Also:
+		<gfx_blend_normal>
+*/
+void gfx_blend_additive();
+
+/*
+	Function: gfx_setcolorvertex
+		Sets the color of a vertex.
+		
+	Arguments:
+		i - Index to the vertex.
+		r - Red value.
+		g - Green value.
+		b - Blue value.
+		a - Alpha value.
+		
+	Remarks:
+		The color values are from 0.0 to 1.0.
+		The color is reset when <gfx_quads_begin> is called.
+*/
+void gfx_setcolorvertex(int i, float r, float g, float b, float a);
+
+/*
+	Function: gfx_setcolor
+		Sets the color of all the vertices.
+		
+	Arguments:
+		r - Red value.
+		g - Green value.
+		b - Blue value.
+		a - Alpha value.
+		
+	Remarks:
+		The color values are from 0.0 to 1.0.
+		The color is reset when <gfx_quads_begin> is called.
+*/
+void gfx_setcolor(float r, float g, float b, float a);
+
+/*
+	Function: gfx_getscreen
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_getscreen(float *tl_x, float *tl_y, float *br_x, float *br_y);
+
+/*
+	Function: gfx_memory_usage
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+int gfx_memory_usage();
+
+/*
+	Function: gfx_screenshot
+		TODO		
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_screenshot();
+
+/*
+	Function: gfx_clip_enable
+		TODO
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_clip_enable(int x, int y, int w, int h);
+
+/*
+	Function: gfx_clip_disable
+		TODO	
+	
+	Arguments:
+		arg1 - desc
+	
+	Returns:
+
+	See Also:
+		<other_func>
+*/
+void gfx_clip_disable();
+
+#endif