Rearranged folder, added image conversion tools.
This commit is contained in:
parent
afdd4dc8a5
commit
b3931a6446
20 changed files with 580 additions and 23 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1,2 +1,3 @@
|
||||||
*.sta filter=lfs diff=lfs merge=lfs -text
|
*.sta filter=lfs diff=lfs merge=lfs -text
|
||||||
*.mod filter=lfs diff=lfs merge=lfs -text
|
*.mod filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.vec filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,8 +1,8 @@
|
||||||
*~
|
*~
|
||||||
*.user
|
*.user
|
||||||
lib/
|
joeylib/lib/
|
||||||
src/SDL2/
|
joeylib/src/SDL2/
|
||||||
src/music
|
joeylib/src/music
|
||||||
src/music.w
|
joeylib/src/music.w
|
||||||
src/*.dis
|
joeylib/src/*.dis
|
||||||
src/*.map
|
joeylib/src/*.map
|
||||||
|
|
48
imgconvert/imgconvert.pro
Normal file
48
imgconvert/imgconvert.pro
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
TEMPLATE = app
|
||||||
|
CONFIG += console
|
||||||
|
CONFIG -= \
|
||||||
|
app_bundle \
|
||||||
|
qt
|
||||||
|
|
||||||
|
JOEY = /home/scott/joey
|
||||||
|
|
||||||
|
JOEY_INCLUDES = \
|
||||||
|
$$JOEY/dist
|
||||||
|
|
||||||
|
JOEY_HEADERS = \
|
||||||
|
$$JOEY/dist/joey.h
|
||||||
|
|
||||||
|
JOEY_LIBS = \
|
||||||
|
-L$$JOEY/dist/linux/x64 \
|
||||||
|
-Wl,-rpath,$$JOEY/dist/linux/x64 \
|
||||||
|
-Wl,--enable-new-dtags \
|
||||||
|
-l:joeylib.a \
|
||||||
|
-Wl,--no-undefined \
|
||||||
|
-ldl \
|
||||||
|
-lsndio \
|
||||||
|
-lpthread \
|
||||||
|
-lrt \
|
||||||
|
-lm
|
||||||
|
|
||||||
|
JOEY_FLAGS = \
|
||||||
|
-pthread \
|
||||||
|
-D_REENTRANT
|
||||||
|
|
||||||
|
SDL_IMAGE_LIBS = \
|
||||||
|
-lSDL2_image
|
||||||
|
|
||||||
|
QMAKE_CFLAGS += \
|
||||||
|
$$JOEY_FLAGS
|
||||||
|
|
||||||
|
INCLUDEPATH += \
|
||||||
|
$$JOEY_INCLUDES
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
$$JOEY_HEADERS
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
main.c
|
||||||
|
|
||||||
|
LIBS += \
|
||||||
|
$$JOEY_LIBS \
|
||||||
|
$$SDL_IMAGE_LIBS
|
130
imgconvert/main.c
Normal file
130
imgconvert/main.c
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <SDL2/SDL_image.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "joey.h"
|
||||||
|
|
||||||
|
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
|
||||||
|
Uint32 getPixel(SDL_Surface *surface, int x, int y) {
|
||||||
|
|
||||||
|
int bpp = surface->format->BytesPerPixel;
|
||||||
|
Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
|
||||||
|
|
||||||
|
switch(bpp) {
|
||||||
|
case 1:
|
||||||
|
return *p;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
// Generates cast increases required alignment of target type [-Wcast-align] warning. Harmless on x86.
|
||||||
|
return *(Uint16 *)p;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
||||||
|
return (Uint32)(p[0] << 16 | p[1] << 8 | p[2]);
|
||||||
|
else
|
||||||
|
return (Uint32)(p[0] | p[1] << 8 | p[2] << 16);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
// Generates cast increases required alignment of target type [-Wcast-align] warning. Harmless on x86.
|
||||||
|
return *(Uint32 *)p;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
if (argc < 3) {
|
||||||
|
printf("Usage: %s [infile] [outfile] {anyting}\n", argv[0]);
|
||||||
|
printf("(If {anything} is provided, image will be displayed as converted until keypress.)\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
jlUtilStartup("STA Converter");
|
||||||
|
|
||||||
|
int imageFlags = IMG_INIT_JPG | IMG_INIT_PNG | IMG_INIT_TIF;
|
||||||
|
int imageResult = IMG_Init(imageFlags);
|
||||||
|
if ((imageResult & imageFlags) != imageFlags) {
|
||||||
|
printf("Failed to initialize SDL2_Image: %s\n", IMG_GetError());
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Surface *image = IMG_Load(argv[1]);
|
||||||
|
int colors = INT_MAX;
|
||||||
|
SDL_Color *c = NULL;
|
||||||
|
|
||||||
|
if (image->format->palette != NULL) {
|
||||||
|
colors = image->format->palette->ncolors;
|
||||||
|
if (colors > 16) {
|
||||||
|
colors = 16;
|
||||||
|
printf("Source palette has more than 16 colors. Only the first 16 will be used.\n");
|
||||||
|
}
|
||||||
|
c = image->format->palette->colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s = %dx%d, %d bits per pixel, %d colors\n", argv[1], image->w, image->h, image->format->BitsPerPixel, colors);
|
||||||
|
|
||||||
|
if (image->w != 320 || image->h != 200 || image->format->BitsPerPixel != 8 || colors > 16) {
|
||||||
|
printf("Image must be 320x200 pixels, 8 bits per pixel, with 16 or fewer colors.\n");
|
||||||
|
free(image);
|
||||||
|
IMG_Quit();
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
jlStaT *sta = NULL;
|
||||||
|
jlStaCreate(sta);
|
||||||
|
|
||||||
|
for (int x=0; x<colors; x++) {
|
||||||
|
sta->palette[x].r = c[x].r / 16;
|
||||||
|
sta->palette[x].g = c[x].g / 16;
|
||||||
|
sta->palette[x].b = c[x].b / 16;
|
||||||
|
printf("Palette %03d = R%03d G%03d B%03d\n", x, sta->palette[x].r, sta->palette[x].g, sta->palette[x].b);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colors < 16) {
|
||||||
|
for (int x=colors; x<16; x++) {
|
||||||
|
sta->palette[x].r = 0;
|
||||||
|
sta->palette[x].g = 0;
|
||||||
|
sta->palette[x].b = 0;
|
||||||
|
printf("Palette %03d = R000 G000 B000 (added)\n", x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int p = 0;
|
||||||
|
for (int y=0; y<image->h; y++) {
|
||||||
|
for (int x=0; x<image->w; x+=2) {
|
||||||
|
//printf("%02X %02X ", getPixel(image, x, y), getPixel(image, x + 1, y));
|
||||||
|
// These are backwards - no idea why yet.
|
||||||
|
sta->pixels[p].r = (unsigned char)getPixel(image, x, y);
|
||||||
|
sta->pixels[p++].l = (unsigned char)getPixel(image, x + 1, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jlStaSave(sta, argv[2]);
|
||||||
|
|
||||||
|
SDL_FreeSurface(image);
|
||||||
|
|
||||||
|
if (argc > 3) {
|
||||||
|
jlStaDisplay(sta);
|
||||||
|
jlDisplayPresent();
|
||||||
|
jlKeyWaitForAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
IMG_Quit();
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
|
@ -7,7 +7,7 @@ if [ -d ${OUT} ]; then
|
||||||
fi
|
fi
|
||||||
mkdir -p ${OUT}
|
mkdir -p ${OUT}
|
||||||
|
|
||||||
pushd ${JOEY}/joeylib/src
|
pushd ${JOEY}/joeylib/joeylib/src
|
||||||
iix assemble jIIgs.asm keep=31:/out/joey/jIIgsasm
|
iix assemble jIIgs.asm keep=31:/out/joey/jIIgsasm
|
||||||
iix compile jIIgs.c keep=31:/out/joey/jIIgsc
|
iix compile jIIgs.c keep=31:/out/joey/jIIgsc
|
||||||
iix compile joey.c keep=31:/out/joey/joey
|
iix compile joey.c keep=31:/out/joey/joey
|
||||||
|
@ -25,8 +25,8 @@ iix dumpobj +D 31:/out/joey/test &> test.dis || true
|
||||||
php ${JOEY}/sdks/iix/ntconverter.php *.mod
|
php ${JOEY}/sdks/iix/ntconverter.php *.mod
|
||||||
popd
|
popd
|
||||||
|
|
||||||
cp -f ${JOEY}/joeylib/lib/IIgs/Tool221#ba0000 ${JOEY}/dist/IIgs/.
|
cp -f ${JOEY}/joeylib/joeylib/lib/IIgs/Tool221#ba0000 ${JOEY}/dist/IIgs/.
|
||||||
cp -f ${JOEY}/joeylib/src/joey.h ${JOEY}/dist/.
|
cp -f ${JOEY}/joeylib/joeylib/src/joey.h ${JOEY}/dist/.
|
||||||
cp -f ${OUT}/joeylib ${JOEY}/dist/IIgs/joeylib#b20000
|
cp -f ${OUT}/joeylib ${JOEY}/dist/IIgs/joeylib#b20000
|
||||||
|
|
||||||
if [ ! -z $1 ]; then
|
if [ ! -z $1 ]; then
|
||||||
|
@ -38,10 +38,10 @@ if [ ! -z $1 ]; then
|
||||||
rm ${IMPORT} 2> /dev/null || true
|
rm ${IMPORT} 2> /dev/null || true
|
||||||
|
|
||||||
cp ${OUT}/test ${OUT}/Test#B30000
|
cp ${OUT}/test ${OUT}/Test#B30000
|
||||||
cp ${JOEY}/joeylib/src/kanga.sta ${OUT}/kanga.sta#060000
|
cp ${JOEY}/joeylib/joeylib/src/kanga.sta ${OUT}/kanga.sta#060000
|
||||||
cp ${JOEY}/joeylib/src/font.sta ${OUT}/font.sta#060000
|
cp ${JOEY}/joeylib/joeylib/src/font.sta ${OUT}/font.sta#060000
|
||||||
cp ${JOEY}/joeylib/src/music ${OUT}/music#D50000
|
cp ${JOEY}/joeylib/joeylib/src/music ${OUT}/music#D50000
|
||||||
cp ${JOEY}/joeylib/src/music.w ${OUT}/music.w#060000
|
cp ${JOEY}/joeylib/joeylib/src/music.w ${OUT}/music.w#060000
|
||||||
|
|
||||||
${CADIUS} createvolume ${IMPORT} ${VOL} 32MB > /dev/null
|
${CADIUS} createvolume ${IMPORT} ${VOL} 32MB > /dev/null
|
||||||
${CADIUS} createfolder ${IMPORT} ${VOL}/data > /dev/null
|
${CADIUS} createfolder ${IMPORT} ${VOL}/data > /dev/null
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
|
||||||
BUILD="${JOEY}/joeylib/build"
|
BUILD="${JOEY}/joeylib/joeylib/build"
|
||||||
SRC="${JOEY}/joeylib/src"
|
SRC="${JOEY}/joeylib/joeylib/src"
|
||||||
|
|
||||||
|
|
||||||
function doBuild() {
|
function doBuild() {
|
||||||
|
@ -28,6 +28,10 @@ function doBuild() {
|
||||||
ar rcs joeylib.a *.o
|
ar rcs joeylib.a *.o
|
||||||
rm *.o
|
rm *.o
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
if [ -d "${BUILD}" ]; then
|
||||||
|
rm -rf "${BUILD}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
CC="gcc"
|
CC="gcc"
|
||||||
|
@ -65,5 +69,3 @@ CFLAGS="-Wall -D_REENTRANT -I${SRC}"
|
||||||
DIST="${JOEY}/dist/macos/x64"
|
DIST="${JOEY}/dist/macos/x64"
|
||||||
INSTALLED="${JOEY}/SDL2/installed/macos/x64/lib"
|
INSTALLED="${JOEY}/SDL2/installed/macos/x64/lib"
|
||||||
doBuild
|
doBuild
|
||||||
|
|
||||||
rm -rf build
|
|
|
@ -58,16 +58,10 @@ int main(void) {
|
||||||
|
|
||||||
jlStaT *kanga = NULL;
|
jlStaT *kanga = NULL;
|
||||||
jlStaT *font = NULL;
|
jlStaT *font = NULL;
|
||||||
jlVecT *vec = NULL;
|
|
||||||
jint16 y;
|
jint16 y;
|
||||||
|
|
||||||
jlUtilStartup("JoeyLib Test");
|
jlUtilStartup("JoeyLib Test");
|
||||||
|
|
||||||
jlVecLoad(vec, "nowhere");
|
|
||||||
jlVecDisplay(vec, 0, 0);
|
|
||||||
jlDisplayPresent();
|
|
||||||
jlKeyWaitForAny();
|
|
||||||
|
|
||||||
jlStaLoad(kanga, "kanga");
|
jlStaLoad(kanga, "kanga");
|
||||||
jlStaLoad(font, "font");
|
jlStaLoad(font, "font");
|
||||||
|
|
338
vecdraw/main.c
Normal file
338
vecdraw/main.c
Normal file
|
@ -0,0 +1,338 @@
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "joey.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_LINE_SIZE 8192
|
||||||
|
|
||||||
|
#define STATE_COMMAND 1
|
||||||
|
#define STATE_NUMBER 2
|
||||||
|
#define STATE_EXECUTE 3
|
||||||
|
|
||||||
|
#define COMMAND_COLOR 1 // C
|
||||||
|
#define COMMAND_CLEAR 2 // E
|
||||||
|
#define COMMAND_PLOT 3 // D (Draw)
|
||||||
|
#define COMMAND_LINE 4 // L
|
||||||
|
#define COMMAND_FILL 5 // F
|
||||||
|
#define COMMAND_PALETTE 6 // P
|
||||||
|
#define COMMAND_RESET 7 // R
|
||||||
|
#define COMMAND_HBOX 8 // B (Box)
|
||||||
|
#define COMMAND_FBOX 9 // S (Solid Box)
|
||||||
|
#define COMMAND_FILLTO 10 // T (FillTo)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *keyword;
|
||||||
|
byte command;
|
||||||
|
byte args;
|
||||||
|
} CommandT;
|
||||||
|
|
||||||
|
|
||||||
|
static CommandT commands[] = {
|
||||||
|
{ "COLOR", COMMAND_COLOR, 1 },
|
||||||
|
{ "CLEAR", COMMAND_CLEAR, 0 },
|
||||||
|
{ "PLOT", COMMAND_PLOT, 2 },
|
||||||
|
{ "LINE", COMMAND_LINE, 2 },
|
||||||
|
{ "FILL", COMMAND_FILL, 2 },
|
||||||
|
{ "PALETTE", COMMAND_PALETTE, 4 },
|
||||||
|
{ "PAL", COMMAND_PALETTE, 4 },
|
||||||
|
{ "RESET", COMMAND_RESET, 0 },
|
||||||
|
{ "BOX", COMMAND_HBOX, 4 },
|
||||||
|
{ "FILLEDBOX", COMMAND_FBOX, 4 },
|
||||||
|
{ "FBOX", COMMAND_FBOX, 4 },
|
||||||
|
{ "FILLTO", COMMAND_FILLTO, 3 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Ugly Macros
|
||||||
|
#define EMIT_COMMAND fputc((byte)data[0], out)
|
||||||
|
#define EMIT_COUNT fputc((byte)count, out)
|
||||||
|
#define EMIT_BYTE fputc((byte)data[i], out)
|
||||||
|
#define EMIT_JINT16 _emitJint16(data[i], out);
|
||||||
|
|
||||||
|
|
||||||
|
void _emitJint16(jint16 data, FILE *out) {
|
||||||
|
#ifdef JOEY_LITLE_ENDIAN
|
||||||
|
fputc((byte)(data & 0xFF), out);
|
||||||
|
fputc((byte)(data >> 8), out);
|
||||||
|
#else
|
||||||
|
fputc((byte)(data >> 8), out);
|
||||||
|
fputc((byte)(data & 0xFF), out);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int _stricmp(const char *a, const char *b) {
|
||||||
|
int ca;
|
||||||
|
int cb;
|
||||||
|
do {
|
||||||
|
ca = (unsigned char)*a++;
|
||||||
|
cb = (unsigned char)*b++;
|
||||||
|
if (islower(ca)) ca = toupper(ca);
|
||||||
|
if (islower(cb)) cb = toupper(cb);
|
||||||
|
} while (ca == cb && ca != '\0');
|
||||||
|
return ca - cb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
FILE *in;
|
||||||
|
FILE *out = NULL;
|
||||||
|
char line[MAX_LINE_SIZE];
|
||||||
|
char *token;
|
||||||
|
int tokenLength;
|
||||||
|
jint16 data[1024];
|
||||||
|
int dIndex;
|
||||||
|
int state;
|
||||||
|
int args;
|
||||||
|
int count;
|
||||||
|
int i;
|
||||||
|
int x;
|
||||||
|
jint16 x1;
|
||||||
|
jint16 y1;
|
||||||
|
jint16 x2;
|
||||||
|
jint16 y2;
|
||||||
|
|
||||||
|
if (argc < 3) {
|
||||||
|
printf("Usage: %s [infile] [outfile]\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
jlUtilStartup("JoeyLib VecDraw");
|
||||||
|
jlDisplayBorder(BORDER_BLACK);
|
||||||
|
|
||||||
|
while (!jlUtilMustExit()) {
|
||||||
|
|
||||||
|
in = fopen(argv[1], "rt");
|
||||||
|
if (in == NULL) {
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
out = fopen(argv[2], "wb");
|
||||||
|
if (out == NULL) {
|
||||||
|
fclose(in);
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
fputs("VEC", out); // File "Magic"
|
||||||
|
fputc(0, out); // Version
|
||||||
|
|
||||||
|
while (fgets(line, MAX_LINE_SIZE, in) != NULL) {
|
||||||
|
state = STATE_COMMAND;
|
||||||
|
dIndex = 0;
|
||||||
|
token = strtok(line, " ");
|
||||||
|
while (token != NULL) {
|
||||||
|
tokenLength = (int)strlen(token);
|
||||||
|
if (tokenLength > 0) {
|
||||||
|
// Handle Comments
|
||||||
|
if (token[0] == '#') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Handle EOLs
|
||||||
|
if ((token[tokenLength - 1] == 10) || (token[tokenLength - 1] == 13)) {
|
||||||
|
tokenLength--;
|
||||||
|
token[tokenLength] = 0;
|
||||||
|
}
|
||||||
|
if (tokenLength > 0) {
|
||||||
|
//printf("[%s] %d\n", token, dIndex);
|
||||||
|
// What is this?
|
||||||
|
if (state == STATE_COMMAND) {
|
||||||
|
for (i=0; i<(int)(sizeof(commands)/sizeof(CommandT)); i++) {
|
||||||
|
//printf("Checking [%s] == [%s]\n", token, commands[i].keyword);
|
||||||
|
if (_stricmp(token, commands[i].keyword) == 0) {
|
||||||
|
data[dIndex++] = commands[i].command;
|
||||||
|
state = (commands[i].args == 0 ? STATE_EXECUTE : STATE_NUMBER);
|
||||||
|
//printf("Found [%s] expecting %d args\n", token, commands[i].args);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (state == STATE_COMMAND) {
|
||||||
|
printf("Unknown command [%s]\n", token);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (state == STATE_NUMBER) {
|
||||||
|
data[dIndex++] = (jint16)atoi(token);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
token = strtok(NULL, " ");
|
||||||
|
}
|
||||||
|
// Can we execute this?
|
||||||
|
if (dIndex > 0) {
|
||||||
|
args = dIndex - 1;
|
||||||
|
i = 1;
|
||||||
|
//printf("Command %d with %d args\n", data[0], args);
|
||||||
|
switch (data[0]) {
|
||||||
|
case COMMAND_COLOR:
|
||||||
|
if (args == 1) {
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_BYTE;
|
||||||
|
jlDrawColor((byte)data[i]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_CLEAR:
|
||||||
|
if (args == 0) {
|
||||||
|
EMIT_COMMAND;
|
||||||
|
jlDrawClear();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_PLOT:
|
||||||
|
count = args % 2;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 2;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
jlDrawPoint(x1, y1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_LINE:
|
||||||
|
count = args % 2;
|
||||||
|
if ((count == 0) && (args >= 4)) {
|
||||||
|
count = args / 2;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
for (x=1; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x2 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y2 = data[i++];
|
||||||
|
jlDrawLine(x1, y1, x2, y2);
|
||||||
|
x1 = x2;
|
||||||
|
y1 = y2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_FILL:
|
||||||
|
count = args % 2;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 2;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
jlDrawFill(x1, y1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_PALETTE:
|
||||||
|
count = args % 4;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 4;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_BYTE;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
x2 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y2 = data[i++];
|
||||||
|
jlPaletteSet((byte)x1, (byte)y1, (byte)x2, (byte)y2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_RESET:
|
||||||
|
if (args == 0) {
|
||||||
|
EMIT_COMMAND;
|
||||||
|
jlPaletteDefault();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_HBOX:
|
||||||
|
count = args % 4;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 4;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
EMIT_JINT16;
|
||||||
|
x2 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y2 = data[i++];
|
||||||
|
jlDrawBox(x1, y1, x2, y2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_FBOX:
|
||||||
|
count = args % 4;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 4;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
EMIT_JINT16;
|
||||||
|
x2 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y2 = data[i++];
|
||||||
|
jlDrawBoxFilled(x1, y1, x2, y2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COMMAND_FILLTO:
|
||||||
|
count = args % 3;
|
||||||
|
if (count == 0) {
|
||||||
|
count = args / 3;
|
||||||
|
EMIT_COMMAND;
|
||||||
|
EMIT_COUNT;
|
||||||
|
for (x=0; x<count; x++) {
|
||||||
|
EMIT_JINT16;
|
||||||
|
x1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
y1 = data[i++];
|
||||||
|
EMIT_BYTE;
|
||||||
|
x2 = data[i++];
|
||||||
|
jlDrawFillTo(x1, y1, (byte)x2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
jlDisplayPresent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(out);
|
||||||
|
fclose(in);
|
||||||
|
|
||||||
|
jlKeyWaitForAny();
|
||||||
|
} // while not exiting
|
||||||
|
|
||||||
|
|
||||||
|
jlUtilShutdown();
|
||||||
|
}
|
44
vecdraw/vecdraw.pro
Normal file
44
vecdraw/vecdraw.pro
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
TEMPLATE = app
|
||||||
|
CONFIG += console
|
||||||
|
CONFIG -= \
|
||||||
|
app_bundle \
|
||||||
|
qt
|
||||||
|
|
||||||
|
JOEY = /home/scott/joey
|
||||||
|
|
||||||
|
JOEY_INCLUDES = \
|
||||||
|
$$JOEY/dist
|
||||||
|
|
||||||
|
JOEY_HEADERS = \
|
||||||
|
$$JOEY/dist/joey.h
|
||||||
|
|
||||||
|
JOEY_LIBS = \
|
||||||
|
-L$$JOEY/dist/linux/x64 \
|
||||||
|
-Wl,-rpath,$$JOEY/dist/linux/x64 \
|
||||||
|
-Wl,--enable-new-dtags \
|
||||||
|
-l:joeylib.a \
|
||||||
|
-Wl,--no-undefined \
|
||||||
|
-ldl \
|
||||||
|
-lsndio \
|
||||||
|
-lpthread \
|
||||||
|
-lrt \
|
||||||
|
-lm
|
||||||
|
|
||||||
|
JOEY_FLAGS = \
|
||||||
|
-pthread \
|
||||||
|
-D_REENTRANT
|
||||||
|
|
||||||
|
QMAKE_CFLAGS += \
|
||||||
|
$$JOEY_FLAGS
|
||||||
|
|
||||||
|
INCLUDEPATH += \
|
||||||
|
$$JOEY_INCLUDES
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
$$JOEY_HEADERS
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
main.c
|
||||||
|
|
||||||
|
LIBS += \
|
||||||
|
$$JOEY_LIBS
|
Loading…
Add table
Reference in a new issue