summaryrefslogtreecommitdiff
path: root/tigr.h
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-04-24 22:07:01 +0200
committerandromeda <andromeda@lenovo>2026-04-24 22:07:01 +0200
commit643cf49f77e64f00589bc16147be0afc95fc08cf (patch)
treea0055c97ba4d024e3c27d2679ddc5c4447ed6b0e /tigr.h
parent1b3c57972570f9e79c21a571b6cd1b3273ea3059 (diff)
rgfw
Diffstat (limited to 'tigr.h')
-rw-r--r--tigr.h366
1 files changed, 0 insertions, 366 deletions
diff --git a/tigr.h b/tigr.h
deleted file mode 100644
index 0e35f54..0000000
--- a/tigr.h
+++ /dev/null
@@ -1,366 +0,0 @@
-// TIGR - TIny GRaphics Library - v3.2
-// ^^ ^^
-//
-// rawr.
-
-/*
-This is free and unencumbered software released into the public domain.
-
-Our intent is that anyone is free to copy and use this software,
-for any purpose, in any form, and by any means.
-
-The authors dedicate any and all copyright interest in the software
-to the public domain, at their own expense for the betterment of mankind.
-
-The software is provided "as is", without any kind of warranty, including
-any implied warranty. If it breaks, you get to keep both pieces.
-*/
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Compiler configuration.
-#ifdef _MSC_VER
-#define TIGR_INLINE static __forceinline
-#else
-#define TIGR_INLINE static inline
-#endif
-
-// Bitmaps ----------------------------------------------------------------
-
-// This struct contains one pixel.
-typedef struct {
- unsigned char r, g, b, a;
-} TPixel;
-
-// Window flags.
-#define TIGR_FIXED 0 // window's bitmap is a fixed size (default)
-#define TIGR_AUTO 1 // window's bitmap is scaled with the window
-#define TIGR_2X 2 // always enforce (at least) 2X pixel scale
-#define TIGR_3X 4 // always enforce (at least) 3X pixel scale
-#define TIGR_4X 8 // always enforce (at least) 4X pixel scale
-#define TIGR_RETINA 16 // enable retina support on OS X
-#define TIGR_NOCURSOR 32 // hide cursor
-#define TIGR_FULLSCREEN 64 // start in full-screen mode
-
-// A Tigr bitmap.
-typedef struct Tigr {
- int w, h; // width/height (unscaled)
- int cx, cy, cw, ch; // clip rect
- TPixel *pix; // pixel data
- void *handle; // OS window handle, NULL for off-screen bitmaps.
- int blitMode; // Target bitmap blit mode
-} Tigr;
-
-// Creates a new empty window with a given bitmap size.
-//
-// Title is UTF-8.
-//
-// In TIGR_FIXED mode, the window is made as large as possible to contain an integer-scaled
-// version of the bitmap while still fitting on the screen. Resizing the window will adapt
-// the scale in integer steps to fit the bitmap.
-//
-// In TIGR_AUTO mode, the initial window size is set to the bitmap size times the pixel
-// scale. Resizing the window will resize the bitmap using the specified scale.
-// For example, in forced 2X mode, the window will be twice as wide (and high) as the bitmap.
-//
-// Turning on TIGR_RETINA mode will request full backing resolution on OSX, meaning that
-// the effective window size might be integer scaled to a larger size. In TIGR_AUTO mode,
-// this means that the Tigr bitmap will change size if the window is moved between
-// retina and non-retina screens.
-//
-Tigr *tigrWindow(int w, int h, const char *title, int flags);
-
-// Creates an empty off-screen bitmap.
-Tigr *tigrBitmap(int w, int h);
-
-// Deletes a window/bitmap.
-void tigrFree(Tigr *bmp);
-
-// Returns non-zero if the user requested to close a window.
-int tigrClosed(Tigr *bmp);
-
-// Displays a window's contents on-screen and updates input.
-void tigrUpdate(Tigr *bmp);
-
-// Called before doing direct OpenGL calls and before tigrUpdate.
-// Returns non-zero if OpenGL is available.
-int tigrBeginOpenGL(Tigr *bmp);
-
-// Sets post shader for a window.
-// This replaces the built-in post-FX shader.
-void tigrSetPostShader(Tigr *bmp, const char* code, int size);
-
-// Sets post-FX properties for a window.
-//
-// The built-in post-FX shader uses the following parameters:
-// p1: hblur - use bilinear filtering along the x-axis (pixels)
-// p2: vblur - use bilinear filtering along the y-axis (pixels)
-// p3: scanlines - CRT scanlines effect (0-1)
-// p4: contrast - contrast boost (1 = no change, 2 = 2X contrast, etc)
-void tigrSetPostFX(Tigr *bmp, float p1, float p2, float p3, float p4);
-
-
-// Drawing ----------------------------------------------------------------
-
-// Helper for reading pixels.
-// For high performance, just access bmp->pix directly.
-TPixel tigrGet(Tigr *bmp, int x, int y);
-
-// Plots a pixel.
-// Clips and blends.
-// For high performance, just access bmp->pix directly.
-void tigrPlot(Tigr *bmp, int x, int y, TPixel pix);
-
-// Clears a bitmap to a color.
-// No blending, no clipping.
-void tigrClear(Tigr *bmp, TPixel color);
-
-// Fills a rectangular area.
-// No blending, no clipping.
-void tigrFill(Tigr *bmp, int x, int y, int w, int h, TPixel color);
-
-// Draws a line.
-// Start pixel is drawn, end pixel is not.
-// Clips and blends.
-void tigrLine(Tigr *bmp, int x0, int y0, int x1, int y1, TPixel color);
-
-// Draws an empty rectangle.
-// Drawing a 1x1 rectangle yields the same result as calling tigrPlot.
-// Clips and blends.
-void tigrRect(Tigr *bmp, int x, int y, int w, int h, TPixel color);
-
-// Fills a rectangle.
-// Fills the inside of the specified rectangular area.
-// Calling tigrRect followed by tigrFillRect using the same arguments
-// causes no overdrawing.
-// Clips and blends.
-void tigrFillRect(Tigr *bmp, int x, int y, int w, int h, TPixel color);
-
-// Draws a circle.
-// Drawing a zero radius circle yields the same result as calling tigrPlot.
-// Drawing a circle with radius one draws a circle three pixels wide.
-// Clips and blends.
-void tigrCircle(Tigr *bmp, int x, int y, int r, TPixel color);
-
-// Fills a circle.
-// Fills the inside of the specified circle.
-// Calling tigrCircle followed by tigrFillCircle using the same arguments
-// causes no overdrawing.
-// Filling a circle with zero radius has no effect.
-// Clips and blends.
-void tigrFillCircle(Tigr *bmp, int x, int y, int r, TPixel color);
-
-// Sets clip rect.
-// Set to (0, 0, -1, -1) to reset clipping to full bitmap.
-void tigrClip(Tigr *bmp, int cx, int cy, int cw, int ch);
-
-// Copies bitmap data.
-// dx/dy = dest co-ordinates
-// sx/sy = source co-ordinates
-// w/h = width/height
-//
-// RGBAdest = RGBAsrc
-// Clips, does not blend.
-void tigrBlit(Tigr *dest, Tigr *src, int dx, int dy, int sx, int sy, int w, int h);
-
-// Same as tigrBlit, but alpha blends the source bitmap with the
-// target using per pixel alpha and the specified global alpha.
-//
-// Ablend = Asrc * alpha
-// RGBdest = RGBsrc * Ablend + RGBdest * (1 - Ablend)
-//
-// Blit mode == TIGR_KEEP_ALPHA:
-// Adest = Adest
-//
-// Blit mode == TIGR_BLEND_ALPHA:
-// Adest = Asrc * Ablend + Adest * (1 - Ablend)
-// Clips and blends.
-void tigrBlitAlpha(Tigr *dest, Tigr *src, int dx, int dy, int sx, int sy, int w, int h, float alpha);
-
-// Same as tigrBlit, but tints the source bitmap with a color
-// and alpha blends the resulting source with the destination.
-//
-// Rblend = Rsrc * Rtint
-// Gblend = Gsrc * Gtint
-// Bblend = Bsrc * Btint
-// Ablend = Asrc * Atint
-//
-// RGBdest = RGBblend * Ablend + RGBdest * (1 - Ablend)
-//
-// Blit mode == TIGR_KEEP_ALPHA:
-// Adest = Adest
-//
-// Blit mode == TIGR_BLEND_ALPHA:
-// Adest = Ablend * Ablend + Adest * (1 - Ablend)
-// Clips and blends.
-void tigrBlitTint(Tigr *dest, Tigr *src, int dx, int dy, int sx, int sy, int w, int h, TPixel tint);
-
-enum TIGRBlitMode {
- TIGR_KEEP_ALPHA = 0, // Keep destination alpha value
- TIGR_BLEND_ALPHA = 1, // Blend destination alpha (default)
-};
-
-// Set destination bitmap blend mode for blit operations.
-void tigrBlitMode(Tigr *dest, int mode);
-
-// Helper for making colors.
-TIGR_INLINE TPixel tigrRGB(unsigned char r, unsigned char g, unsigned char b)
-{
- TPixel p; p.r = r; p.g = g; p.b = b; p.a = 0xff; return p;
-}
-
-// Helper for making colors.
-TIGR_INLINE TPixel tigrRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
-{
- TPixel p; p.r = r; p.g = g; p.b = b; p.a = a; return p;
-}
-
-
-// Font printing ----------------------------------------------------------
-
-typedef struct {
- int code, x, y, w, h;
-} TigrGlyph;
-
-typedef struct {
- Tigr *bitmap;
- int numGlyphs;
- TigrGlyph *glyphs;
-} TigrFont;
-
-typedef enum {
- TCP_ASCII = 0,
- TCP_1252 = 1252,
- TCP_UTF32 = 12001
-} TCodepage;
-
-// Loads a font from a bitmap font sheet.
-// The loaded font takes ownership of the provided bitmap.
-//
-// Codepages:
-//
-// TCP_ASCII - Regular 7-bit ASCII
-// TCP_1252 - Windows 1252
-// TCP_UTF32 - Unicode subset
-//
-// For ASCII and 1252, the font bitmap should contain all characters
-// for the given codepage, excluding the first 32 control codes.
-//
-// For UTF32 - the font bitmap contains a subset of Unicode characters
-// and must be in the format generated by tigrFont for UTF32.
-//
-TigrFont *tigrLoadFont(Tigr *bitmap, int codepage);
-
-// Frees a font and associated font sheet.
-void tigrFreeFont(TigrFont *font);
-
-// Prints UTF-8 text onto a bitmap.
-// NOTE:
-// This uses the target bitmap blit mode.
-// See tigrBlitTint for details.
-void tigrPrint(Tigr *dest, TigrFont *font, int x, int y, TPixel color, const char *text, ...);
-
-// Returns the width/height of a string.
-int tigrTextWidth(TigrFont *font, const char *text);
-int tigrTextHeight(TigrFont *font, const char *text);
-
-// The built-in font.
-extern TigrFont *tfont;
-
-
-// User Input -------------------------------------------------------------
-
-// Key scancodes. For letters/numbers, use ASCII ('A'-'Z' and '0'-'9').
-typedef enum {
- TK_PAD0=128,TK_PAD1,TK_PAD2,TK_PAD3,TK_PAD4,TK_PAD5,TK_PAD6,TK_PAD7,TK_PAD8,TK_PAD9,
- TK_PADMUL,TK_PADADD,TK_PADENTER,TK_PADSUB,TK_PADDOT,TK_PADDIV,
- TK_F1,TK_F2,TK_F3,TK_F4,TK_F5,TK_F6,TK_F7,TK_F8,TK_F9,TK_F10,TK_F11,TK_F12,
- TK_BACKSPACE,TK_TAB,TK_RETURN,TK_SHIFT,TK_CONTROL,TK_ALT,TK_PAUSE,TK_CAPSLOCK,
- TK_ESCAPE,TK_SPACE,TK_PAGEUP,TK_PAGEDN,TK_END,TK_HOME,TK_LEFT,TK_UP,TK_RIGHT,TK_DOWN,
- TK_INSERT,TK_DELETE,TK_LWIN,TK_RWIN,TK_NUMLOCK,TK_SCROLL,TK_LSHIFT,TK_RSHIFT,
- TK_LCONTROL,TK_RCONTROL,TK_LALT,TK_RALT,TK_SEMICOLON,TK_EQUALS,TK_COMMA,TK_MINUS,
- TK_DOT,TK_SLASH,TK_BACKTICK,TK_LSQUARE,TK_BACKSLASH,TK_RSQUARE,TK_TICK
-} TKey;
-
-// Returns mouse input for a window.
-// The value set to "buttons" is a bit set where bits 0, 1 and 2
-// corresponds to the left, right and middle buttons.
-// A set bit indicates that a button is held.
-void tigrMouse(Tigr *bmp, int *x, int *y, int *buttons);
-
-typedef struct {
- int x;
- int y;
-} TigrTouchPoint;
-
-// Reads touch input for a window.
-// Returns number of touch points read.
-int tigrTouch(Tigr *bmp, TigrTouchPoint* points, int maxPoints);
-
-// Reads the delta of the scroll "wheel" in somewhat platform neutral
-// units where 1.0 corresponds to a "notch". The actual correlation between
-// physical movement and this number varies between platforms, input methods
-// and settings.
-void tigrScrollWheel(Tigr* bmp, float* x, float *y);
-
-// Reads the keyboard for a window.
-// Returns non-zero if a key is pressed/held.
-// tigrKeyDown tests for the initial press, tigrKeyHeld repeats each frame.
-int tigrKeyDown(Tigr *bmp, int key);
-int tigrKeyHeld(Tigr *bmp, int key);
-
-// Reads character input for a window.
-// Returns the Unicode value of the last key pressed, or 0 if none.
-int tigrReadChar(Tigr *bmp);
-
-// Show / hide virtual keyboard.
-// (Only available on iOS / Android)
-void tigrShowKeyboard(int show);
-
-
-// Bitmap I/O -------------------------------------------------------------
-
-// Loads a PNG, from either a file or memory. (fileName is UTF-8)
-// On error, returns NULL and sets errno.
-Tigr *tigrLoadImage(const char *fileName);
-Tigr *tigrLoadImageMem(const void *data, int length);
-
-// Saves a PNG to a file. (fileName is UTF-8)
-// On error, returns zero and sets errno.
-int tigrSaveImage(const char *fileName, Tigr *bmp);
-
-
-// Helpers ----------------------------------------------------------------
-
-// Returns the amount of time elapsed since tigrTime was last called,
-// or zero on the first call.
-float tigrTime(void);
-
-// Displays an error message and quits. (UTF-8)
-// 'bmp' can be NULL.
-void tigrError(Tigr *bmp, const char *message, ...);
-
-// Reads an entire file into memory. (fileName is UTF-8)
-// Free it yourself after with 'free'.
-// On error, returns NULL and sets errno.
-// TIGR will automatically append a NUL terminator byte
-// to the end (not included in the length)
-void *tigrReadFile(const char *fileName, int *length);
-
-// Decompresses DEFLATEd zip/zlib data into a buffer.
-// Returns non-zero on success.
-int tigrInflate(void *out, unsigned outlen, const void *in, unsigned inlen);
-
-// Decodes a single UTF8 codepoint and returns the next pointer.
-const char *tigrDecodeUTF8(const char *text, int *cp);
-
-// Encodes a single UTF8 codepoint and returns the next pointer.
-char *tigrEncodeUTF8(char *text, int cp);
-
-#ifdef __cplusplus
-}
-#endif