forked from speedie/spmenu
some cleanup, start using // comments more
This commit is contained in:
parent
b29bb4510f
commit
8377ec92a9
23
libs/define.c
Normal file
23
libs/define.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
// declare macros
|
||||||
|
#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
|
||||||
|
#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
|
||||||
|
#define INTERSECT(x,y,w,h,r) (MAX(0, MIN((x)+(w),(r).x_org+(r).width) - MAX((x),(r).x_org)) \
|
||||||
|
&& MAX(0, MIN((y)+(h),(r).y_org+(r).height) - MAX((y),(r).y_org)))
|
||||||
|
#define LENGTH(X) (sizeof X / sizeof X[0])
|
||||||
|
#define TEXTW(X) (drw_font_getwidth(drw, (X), False) + lrpad)
|
||||||
|
#define TEXTWM(X) (drw_font_getwidth(drw, (X), True) + lrpad)
|
||||||
|
|
||||||
|
// number
|
||||||
|
#define NUMBERSMAXDIGITS 100
|
||||||
|
#define NUMBERSBUFSIZE (NUMBERSMAXDIGITS * 2) + 1
|
||||||
|
|
||||||
|
/* user friendly names for all the modifiers */
|
||||||
|
#define CONTROL ControlMask
|
||||||
|
#define SHIFT ShiftMask
|
||||||
|
#define ALT Mod1Mask
|
||||||
|
#define ALTR Mod3Mask
|
||||||
|
#define SUPER Mod4Mask
|
||||||
|
#define SUPERR Mod5Mask
|
||||||
|
|
||||||
|
/* alpha */
|
||||||
|
#define opaque 0xffU
|
38
libs/draw.c
38
libs/draw.c
|
@ -1,5 +1,5 @@
|
||||||
void
|
void
|
||||||
drawhighlights(struct item *item, int x, int y, int maxw)
|
drawhighlights(struct item *item, int x, int y, int w)
|
||||||
{
|
{
|
||||||
char restorechar, tokens[sizeof text], *highlight, *token;
|
char restorechar, tokens[sizeof text], *highlight, *token;
|
||||||
int indentx, highlightlen;
|
int indentx, highlightlen;
|
||||||
|
@ -10,6 +10,7 @@ drawhighlights(struct item *item, int x, int y, int maxw)
|
||||||
|
|
||||||
for (token = strtok(tokens, " "); token; token = strtok(NULL, " ")) {
|
for (token = strtok(tokens, " "); token; token = strtok(NULL, " ")) {
|
||||||
highlight = fstrstr(itemtext, token);
|
highlight = fstrstr(itemtext, token);
|
||||||
|
|
||||||
while (highlight) {
|
while (highlight) {
|
||||||
highlightlen = highlight - itemtext;
|
highlightlen = highlight - itemtext;
|
||||||
restorechar = *highlight;
|
restorechar = *highlight;
|
||||||
|
@ -20,8 +21,8 @@ drawhighlights(struct item *item, int x, int y, int maxw)
|
||||||
restorechar = highlight[strlen(token)];
|
restorechar = highlight[strlen(token)];
|
||||||
highlight[strlen(token)] = '\0';
|
highlight[strlen(token)] = '\0';
|
||||||
|
|
||||||
if (indentx - (lrpad / 2) - 1 < maxw)
|
if (indentx - (lrpad / 2) - 1 < w)
|
||||||
drw_text(drw, x + indentx - (lrpad / 2) - 1, y, MIN(maxw - indentx, TEXTW(highlight) - lrpad), bh, 0, highlight, 0, pango_highlight ? True : False);
|
drw_text(drw, x + indentx - (lrpad / 2) - 1, y, MIN(w - indentx, TEXTW(highlight) - lrpad), bh, 0, highlight, 0, pango_highlight ? True : False);
|
||||||
|
|
||||||
highlight[strlen(token)] = restorechar;
|
highlight[strlen(token)] = restorechar;
|
||||||
|
|
||||||
|
@ -60,25 +61,24 @@ drawitem(struct item *item, int x, int y, int w)
|
||||||
memcpy(scm, scheme[SchemeItemNormPri], sizeof(scm));
|
memcpy(scm, scheme[SchemeItemNormPri], sizeof(scm));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set scheme */
|
drw_setscheme(drw, scm); // set scheme
|
||||||
drw_setscheme(drw, scm);
|
|
||||||
|
|
||||||
/* parse item text */
|
/* parse item text */
|
||||||
for (wr = 0, rd = 0; item->text[rd]; rd++) {
|
for (wr = 0, rd = 0; item->text[rd]; rd++) {
|
||||||
if (item->text[rd] == '' && item->text[rd + 1] == '[') {
|
if (item->text[rd] == '' && item->text[rd + 1] == '[') {
|
||||||
size_t alen = strspn(item->text + rd + 2,
|
size_t alen = strspn(item->text + rd + 2,
|
||||||
"0123456789;");
|
"0123456789;");
|
||||||
if (item->text[rd + alen + 2] == 'm') { /* character is 'm' which is the last character in the sequence */
|
if (item->text[rd + alen + 2] == 'm') { // last character in sequence is always 'm'
|
||||||
buffer[wr] = '\0'; /* clear out character */
|
buffer[wr] = '\0';
|
||||||
|
|
||||||
apply_fribidi(buffer);
|
apply_fribidi(buffer);
|
||||||
rw = MIN(w, TEXTW(buffer) - lrpad);
|
rw = MIN(w, TEXTW(buffer) - lrpad);
|
||||||
drw_text(drw, x, y, rw + lp, bh, lp, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
drw_text(drw, x, y, rw + lp, bh, lp, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
||||||
|
|
||||||
x += rw + lp;
|
x += rw + lp;
|
||||||
orw += rw;
|
orw += rw; // width of all colored text, we add this to the full width later
|
||||||
ib = 1;
|
ib = 1;
|
||||||
lp = 0; /* no padding */
|
lp = 0;
|
||||||
|
|
||||||
char *ep = item->text + rd + 1;
|
char *ep = item->text + rd + 1;
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ drawitem(struct item *item, int x, int y, int w)
|
||||||
rd += alen + 2;
|
rd += alen + 2;
|
||||||
wr = 0;
|
wr = 0;
|
||||||
|
|
||||||
drw_setscheme(drw, scm);
|
drw_setscheme(drw, scm); // set scheme
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -136,11 +136,11 @@ drawitem(struct item *item, int x, int y, int w)
|
||||||
|
|
||||||
w -= orw;
|
w -= orw;
|
||||||
|
|
||||||
/* draw any text that doesn't use sgr sequences */
|
// now draw any non-colored text
|
||||||
apply_fribidi(buffer);
|
apply_fribidi(buffer);
|
||||||
int r = drw_text(drw, x, y, w, bh, lp, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
int r = drw_text(drw, x, y, w, bh, lp, isrtl ? fribidi_text : buffer, 0, pango_item ? True : False);
|
||||||
|
if (!hidehighlight && !ib) drawhighlights(item, x, y, w);
|
||||||
|
|
||||||
if (!hidehighlight && !ib) drawhighlights(item, x, y, w - rw);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +200,6 @@ drawmenu(void)
|
||||||
drw_rect(drw, x + curpos, 2 + (bh - fh) / 2, 2, fh - 4, 1, 0);
|
drw_rect(drw, x + curpos, 2 + (bh - fh) / 2, 2, fh - 4, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get match count */
|
|
||||||
if (!hidematchcount) {
|
if (!hidematchcount) {
|
||||||
recalculatenumbers();
|
recalculatenumbers();
|
||||||
numberWidth = TEXTW(numbers);
|
numberWidth = TEXTW(numbers);
|
||||||
|
@ -244,22 +243,22 @@ drawmenu(void)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// horizontal list
|
||||||
} else if (matches) {
|
} else if (matches) {
|
||||||
/* draw horizontal list */
|
|
||||||
x += inputw;
|
x += inputw;
|
||||||
w = larrowWidth;
|
w = larrowWidth;
|
||||||
|
|
||||||
if (curr->left && !hidelarrow) {
|
if (curr->left && !hidelarrow) { // draw left arrow
|
||||||
drw_setscheme(drw, scheme[SchemeLArrow]);
|
drw_setscheme(drw, scheme[SchemeLArrow]);
|
||||||
drw_text(drw, x, 0, w, bh, lrpad / 2, leftarrow, 0, pango_leftarrow ? True : False);
|
drw_text(drw, x, 0, w, bh, lrpad / 2, leftarrow, 0, pango_leftarrow ? True : False);
|
||||||
}
|
}
|
||||||
|
|
||||||
x += w;
|
x += w;
|
||||||
|
|
||||||
for (item = curr; item != next; item = item->right)
|
for (item = curr; item != next; item = item->right) // draw items
|
||||||
x = drawitem(item, x, 0, MIN(pango_item ? TEXTWM(item->text) : TEXTW(item->text), mw - x - rarrowWidth - numberWidth - modeWidth));
|
x = drawitem(item, x, 0, MIN(pango_item ? TEXTWM(item->text) : TEXTW(item->text), mw - x - rarrowWidth - numberWidth - modeWidth));
|
||||||
|
|
||||||
if (next && !hiderarrow) {
|
if (next && !hiderarrow) { // draw right arrow
|
||||||
w = rarrowWidth;
|
w = rarrowWidth;
|
||||||
drw_setscheme(drw, scheme[SchemeRArrow]);
|
drw_setscheme(drw, scheme[SchemeRArrow]);
|
||||||
|
|
||||||
|
@ -267,15 +266,16 @@ drawmenu(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hidematchcount) {
|
if (!hidematchcount) { // draw match count
|
||||||
drw_setscheme(drw, scheme[SchemeNumber]);
|
drw_setscheme(drw, scheme[SchemeNumber]);
|
||||||
drw_text(drw, mw - numberWidth - modeWidth, 0, numberWidth, bh, lrpad / 2, numbers, 0, pango_numbers ? True : False);
|
drw_text(drw, mw - numberWidth - modeWidth, 0, numberWidth, bh, lrpad / 2, numbers, 0, pango_numbers ? True : False);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hidemode) {
|
if (!hidemode) { // draw mode indicator
|
||||||
drw_setscheme(drw, scheme[SchemeMode]);
|
drw_setscheme(drw, scheme[SchemeMode]);
|
||||||
drw_text(drw, mw - modeWidth, 0, modeWidth, bh, lrpad / 2, modetext, 0, pango_mode ? True : False);
|
drw_text(drw, mw - modeWidth, 0, modeWidth, bh, lrpad / 2, modetext, 0, pango_mode ? True : False);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// map the drawing
|
||||||
drw_map(drw, win, 0, 0, mw, mh);
|
drw_map(drw, win, 0, 0, mw, mh);
|
||||||
}
|
}
|
||||||
|
|
7
libs/key_struct.c
Normal file
7
libs/key_struct.c
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
typedef struct {
|
||||||
|
unsigned int mode;
|
||||||
|
unsigned int mod;
|
||||||
|
KeySym keysym;
|
||||||
|
void (*func)(const Arg *);
|
||||||
|
const Arg arg;
|
||||||
|
} Key;
|
107
spmenu.c
107
spmenu.c
|
@ -10,7 +10,8 @@
|
||||||
* After making changes, run 'make clean install' to install and 'make' to attempt a compilation.
|
* After making changes, run 'make clean install' to install and 'make' to attempt a compilation.
|
||||||
* `make man` will generate a man page from 'docs/docs.md', which is a Markdown document. Run this before commiting.
|
* `make man` will generate a man page from 'docs/docs.md', which is a Markdown document. Run this before commiting.
|
||||||
*
|
*
|
||||||
* See LICENSE file for copyright and license details. */
|
* See LICENSE file for copyright and license details.
|
||||||
|
*/
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -21,52 +22,55 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
/* check if we should enable right to left language support */
|
// check if we should enable right to left language support
|
||||||
#ifndef RTL
|
#ifndef RTL
|
||||||
#define USERTL 0
|
#define USERTL 0
|
||||||
#else
|
#else
|
||||||
#define USERTL 1
|
#define USERTL 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* check if we should enable pango support */
|
// check if we should enable pango or use xft
|
||||||
#ifndef PANGO
|
#ifndef PANGO
|
||||||
#define USEPANGO 0
|
#define USEPANGO 0
|
||||||
#else
|
#else
|
||||||
#define USEPANGO 1
|
#define USEPANGO 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* check if we should enable image support */
|
// check if we should enable image support
|
||||||
#ifndef IMAGE
|
#ifndef IMAGE
|
||||||
#define USEIMAGE 0
|
#define USEIMAGE 0
|
||||||
#else
|
#else
|
||||||
#define USEIMAGE 1
|
#define USEIMAGE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* check if we should enable multimonitor support using xinerama */
|
// check if we should enable multimonitor support using libXinerama
|
||||||
#ifdef XINERAMA
|
#ifdef XINERAMA
|
||||||
#define USEXINERAMA 1
|
#define USEXINERAMA 1
|
||||||
#else
|
#else
|
||||||
#define USEXINERAMA 0
|
#define USEXINERAMA 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* include right to left language library */
|
// include fribidi used for right to left language support
|
||||||
#if USERTL
|
#if USERTL
|
||||||
#include <fribidi.h>
|
#include <fribidi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* include libraries used for image support */
|
// include libraries used for image support
|
||||||
#if USEIMAGE
|
#if USEIMAGE
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
#include <openssl/md5.h>
|
#include <openssl/md5.h>
|
||||||
|
// openssl is used to generate a checksum, used for caching
|
||||||
|
// TODO: remove this dependency by doing it some other way
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* include xinerama */
|
// include xinerama used for multi monitor support
|
||||||
#if USEXINERAMA
|
#if USEXINERAMA
|
||||||
#include <X11/extensions/Xinerama.h>
|
#include <X11/extensions/Xinerama.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// include X11 headers
|
||||||
#include <X11/XKBlib.h>
|
#include <X11/XKBlib.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
@ -74,38 +78,17 @@
|
||||||
#include <X11/Xresource.h>
|
#include <X11/Xresource.h>
|
||||||
#include <X11/Xft/Xft.h>
|
#include <X11/Xft/Xft.h>
|
||||||
|
|
||||||
|
// include pango used for markup
|
||||||
#if USEPANGO
|
#if USEPANGO
|
||||||
#include <pango/pango.h>
|
#include <pango/pango.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// include macros and other defines
|
||||||
|
#include "libs/define.c"
|
||||||
|
|
||||||
|
// various headers
|
||||||
#include "libs/sl/draw.h"
|
#include "libs/sl/draw.h"
|
||||||
#include "libs/sl/main.h"
|
#include "libs/sl/main.h"
|
||||||
|
|
||||||
/* macros */
|
|
||||||
#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
|
|
||||||
#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
|
|
||||||
#define INTERSECT(x,y,w,h,r) (MAX(0, MIN((x)+(w),(r).x_org+(r).width) - MAX((x),(r).x_org)) \
|
|
||||||
&& MAX(0, MIN((y)+(h),(r).y_org+(r).height) - MAX((y),(r).y_org)))
|
|
||||||
#define LENGTH(X) (sizeof X / sizeof X[0])
|
|
||||||
#define TEXTW(X) (drw_font_getwidth(drw, (X), False) + lrpad)
|
|
||||||
#define TEXTWM(X) (drw_font_getwidth(drw, (X), True) + lrpad)
|
|
||||||
|
|
||||||
/* number */
|
|
||||||
#define NUMBERSMAXDIGITS 100
|
|
||||||
#define NUMBERSBUFSIZE (NUMBERSMAXDIGITS * 2) + 1
|
|
||||||
|
|
||||||
/* user friendly names for all the modifiers */
|
|
||||||
#define CONTROL ControlMask
|
|
||||||
#define SHIFT ShiftMask
|
|
||||||
#define ALT Mod1Mask
|
|
||||||
#define ALTR Mod3Mask
|
|
||||||
#define SUPER Mod4Mask
|
|
||||||
#define SUPERR Mod5Mask
|
|
||||||
|
|
||||||
/* alpha */
|
|
||||||
#define opaque 0xffU
|
|
||||||
|
|
||||||
/* include headers */
|
|
||||||
#include "libs/schemes.h"
|
#include "libs/schemes.h"
|
||||||
#include "libs/arg.h"
|
#include "libs/arg.h"
|
||||||
#include "libs/mode.h"
|
#include "libs/mode.h"
|
||||||
|
@ -114,30 +97,24 @@
|
||||||
#include "libs/mouse.h"
|
#include "libs/mouse.h"
|
||||||
#include "libs/sort.h"
|
#include "libs/sort.h"
|
||||||
|
|
||||||
|
// misc
|
||||||
|
#include "libs/key_struct.c"
|
||||||
|
|
||||||
|
// text
|
||||||
static char text[BUFSIZ] = "";
|
static char text[BUFSIZ] = "";
|
||||||
|
|
||||||
struct item {
|
|
||||||
char *text;
|
|
||||||
char *image;
|
|
||||||
char *ex;
|
|
||||||
struct item *left, *right;
|
|
||||||
int hp;
|
|
||||||
double distance;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int mode;
|
|
||||||
unsigned int mod;
|
|
||||||
KeySym keysym;
|
|
||||||
void (*func)(const Arg *);
|
|
||||||
const Arg arg;
|
|
||||||
} Key;
|
|
||||||
|
|
||||||
static char numbers[NUMBERSBUFSIZE] = "";
|
static char numbers[NUMBERSBUFSIZE] = "";
|
||||||
|
|
||||||
|
// high priority
|
||||||
static int hplength = 0;
|
static int hplength = 0;
|
||||||
static char **hpitems = NULL;
|
static char **hpitems = NULL;
|
||||||
|
|
||||||
|
// embed
|
||||||
static char *embed;
|
static char *embed;
|
||||||
|
|
||||||
|
// keybinds
|
||||||
static int numlockmask = 0;
|
static int numlockmask = 0;
|
||||||
|
|
||||||
|
// height of each item, menu width, menu height
|
||||||
static int bh, mw, mh;
|
static int bh, mw, mh;
|
||||||
static int reallines = 0;
|
static int reallines = 0;
|
||||||
static int reqlineheight; /* required menu height */
|
static int reqlineheight; /* required menu height */
|
||||||
|
@ -155,16 +132,28 @@ static struct item *matches, *matchend;
|
||||||
static struct item *prev, *curr, *next, *sel;
|
static struct item *prev, *curr, *next, *sel;
|
||||||
static int screen;
|
static int screen;
|
||||||
|
|
||||||
/* image globals */
|
// item struct
|
||||||
|
struct item {
|
||||||
|
char *text;
|
||||||
|
#if USEIMAGE
|
||||||
|
char *image;
|
||||||
|
#endif
|
||||||
|
char *ex;
|
||||||
|
struct item *left, *right;
|
||||||
|
int hp;
|
||||||
|
double distance;
|
||||||
|
};
|
||||||
|
|
||||||
|
// image globals
|
||||||
#if USEIMAGE
|
#if USEIMAGE
|
||||||
static int flip = 0;
|
static int flip = 0;
|
||||||
static int rotation = 0;
|
static int rotation = 0;
|
||||||
static int needredraw = 1;
|
static int needredraw = 1;
|
||||||
#endif
|
|
||||||
static int longestedge = 0;
|
static int longestedge = 0;
|
||||||
static int imagew = 0;
|
static int imagew = 0;
|
||||||
static int imageh = 0;
|
static int imageh = 0;
|
||||||
static int imageg = 0;
|
static int imageg = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* set an integer if to 1 if we have right to left language support enabled
|
/* set an integer if to 1 if we have right to left language support enabled
|
||||||
* doing it this way, because we can reduce the amount of #if and #else lines used.
|
* doing it this way, because we can reduce the amount of #if and #else lines used.
|
||||||
|
@ -175,16 +164,18 @@ static int isrtl = 1;
|
||||||
static int isrtl = 0;
|
static int isrtl = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// X11 properties
|
||||||
static Atom clip, utf8, types, dock;
|
static Atom clip, utf8, types, dock;
|
||||||
static Display *dpy;
|
static Display *dpy;
|
||||||
static Window root, parentwin, win;
|
static Window root, parentwin, win;
|
||||||
static XIC xic;
|
static XIC xic;
|
||||||
|
|
||||||
static int useargb = 0;
|
static int useargb = 0;
|
||||||
|
|
||||||
|
// colors
|
||||||
static Visual *visual;
|
static Visual *visual;
|
||||||
static int depth;
|
static int depth;
|
||||||
static Colormap cmap;
|
static Colormap cmap;
|
||||||
|
|
||||||
static Drw *drw;
|
static Drw *drw;
|
||||||
static Clr *scheme[SchemeLast];
|
static Clr *scheme[SchemeLast];
|
||||||
static Clr textclrs[256];
|
static Clr textclrs[256];
|
||||||
|
@ -811,7 +802,9 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
readargs(argc, argv);
|
readargs(argc, argv);
|
||||||
|
|
||||||
|
#if USEIMAGE
|
||||||
longestedge = MAX(imagewidth, imageheight);
|
longestedge = MAX(imagewidth, imageheight);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (mode) {
|
if (mode) {
|
||||||
curMode = 1;
|
curMode = 1;
|
||||||
|
@ -864,12 +857,14 @@ main(int argc, char *argv[])
|
||||||
grabkeyboard();
|
grabkeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set values which we can restore later */
|
// set default values
|
||||||
|
#if USEIMAGE
|
||||||
if (!imagew || !imageh || !imageg) {
|
if (!imagew || !imageh || !imageg) {
|
||||||
imagew = imagewidth;
|
imagew = imagewidth;
|
||||||
imageh = imageheight;
|
imageh = imageheight;
|
||||||
imagegaps = imagegaps;
|
imagegaps = imagegaps;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
setup();
|
setup();
|
||||||
eventloop();
|
eventloop();
|
||||||
|
|
Loading…
Reference in a new issue