Skip to content

Commit

Permalink
Make compatible with upstream changes
Browse files Browse the repository at this point in the history
  • Loading branch information
x-sheep committed Oct 2, 2024
1 parent fa36bf0 commit b27b187
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 81 deletions.
93 changes: 47 additions & 46 deletions PuzzleCommon/WindowsModern.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,50 +65,50 @@ Platform::String ^FromChars(char *input, bool kill)
return ret;
}

void winmodern_status_bar(void *handle, const char *text)
void winmodern_status_bar(drawing *dr, const char *text)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleStatusBar ^bar = *((IPuzzleStatusBar^*)fe->statusbar);

bar->UpdateStatusBar(FromChars(text));
}

int winmodern_start_draw(void *handle)
int winmodern_start_draw(drawing *dr)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

return canvas->StartDraw();
}

void winmodern_draw_update(void *handle, int x, int y, int w, int h)
void winmodern_draw_update(drawing *dr, int x, int y, int w, int h)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->UpdateArea(x, y, w, h);
}

void winmodern_clip(void *handle, int x, int y, int w, int h)
void winmodern_clip(drawing *dr, int x, int y, int w, int h)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->StartClip(x, y, w, h);
}

void winmodern_unclip(void *handle)
void winmodern_unclip(drawing *dr)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->EndClip();
}

void winmodern_draw_text(void *handle, int x, int y, int fonttype, int fontsize,
void winmodern_draw_text(drawing *dr, int x, int y, int fonttype, int fontsize,
int align, int colour, const char *text)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

GameFontType gamefont = fonttype == FONT_VARIABLE ?
Expand All @@ -128,27 +128,27 @@ void winmodern_draw_text(void *handle, int x, int y, int fonttype, int fontsize,
canvas->DrawText(x, y, gamefont, halign, valign, fontsize, colour, FromChars(text));
}

void winmodern_draw_rect(void *handle, int x, int y, int w, int h, int colour)
void winmodern_draw_rect(drawing *dr, int x, int y, int w, int h, int colour)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->DrawRect(x, y, w, h, colour);
}

void winmodern_draw_line(void *handle, int x1, int y1, int x2, int y2,
void winmodern_draw_line(drawing *dr, int x1, int y1, int x2, int y2,
int colour)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->DrawLine(x1, y1, x2, y2, colour);
}

void winmodern_draw_poly(void *handle, const int *coords, int npoints,
void winmodern_draw_poly(drawing *dr, const int *coords, int npoints,
int fillcolour, int outlinecolour)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

auto pc = ref new Vector<Point>();
Expand All @@ -162,24 +162,24 @@ void winmodern_draw_poly(void *handle, const int *coords, int npoints,
canvas->DrawPolygon(pc, fillcolour, outlinecolour);
}

void winmodern_draw_circle(void *handle, int cx, int cy, int radius,
void winmodern_draw_circle(drawing *dr, int cx, int cy, int radius,
int fillcolour, int outlinecolour)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->DrawCircle(cx, cy, radius, fillcolour, outlinecolour);
}

float winmodern_draw_scale(void *handle)
float winmodern_draw_scale(drawing *dr)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
return fe->scale;
}

blitter *winmodern_blitter_new(void *handle, int w, int h)
blitter *winmodern_blitter_new(drawing *dr, int w, int h)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;

blitter *bl = snew(blitter);
bl->handle = fe->next_blitter_id++;
Expand All @@ -195,9 +195,9 @@ blitter *winmodern_blitter_new(void *handle, int w, int h)
return bl;
}

void winmodern_blitter_free(void *handle, blitter *bl)
void winmodern_blitter_free(drawing *dr, blitter *bl)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;

if (fe->canvas)
{
Expand All @@ -208,9 +208,9 @@ void winmodern_blitter_free(void *handle, blitter *bl)
sfree(bl);
}

void winmodern_blitter_save(void *handle, blitter *bl, int x, int y)
void winmodern_blitter_save(drawing *dr, blitter *bl, int x, int y)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

/* Resize the blitter rectangle to never use a negative x or y */
Expand Down Expand Up @@ -238,9 +238,9 @@ void winmodern_blitter_save(void *handle, blitter *bl, int x, int y)
canvas->BlitterSave(bl->handle, bl->x, bl->y, bl->rw, bl->rh);
}

void winmodern_blitter_load(void *handle, blitter *bl, int x, int y)
void winmodern_blitter_load(drawing *dr, blitter *bl, int x, int y)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

if (x == BLITTER_FROMSAVED)
Expand All @@ -251,40 +251,40 @@ void winmodern_blitter_load(void *handle, blitter *bl, int x, int y)
canvas->BlitterLoad(bl->handle, max(x, 0), max(y, 0), bl->rw, bl->rh);
}

void winmodern_end_draw(void *handle)
void winmodern_end_draw(drawing *dr)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->EndDraw();
}

static char *winmodern_text_fallback(void *handle, const char *const *strings,
static char *winmodern_text_fallback(drawing *dr, const char *const *strings,
int nstrings)
{
/* Any UTF-8 string is accepted. */
return dupstr(strings[0]);
}

void winmodern_line_width(void *handle, float width)
void winmodern_line_width(drawing *dr, float width)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->SetLineWidth(width);
}

void winmodern_line_dotted(void *handle, bool dotted)
void winmodern_line_dotted(drawing *dr, bool dotted)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

canvas->SetLineDotted(dotted);
}

void winmodern_add_print_colour(void *handle, int id)
void winmodern_add_print_colour(drawing *dr, int id)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
IPuzzleCanvas ^canvas = *((IPuzzleCanvas^*)fe->canvas);

int hatch = 0;
Expand All @@ -295,30 +295,31 @@ void winmodern_add_print_colour(void *handle, int id)
// All puzzles which use the hatch brush have been edited.
canvas->AddColor(r, g, b);
}
void winmodern_begin_doc(void *handle, int pages)
void winmodern_begin_doc(drawing *dr, int pages)
{
}
void winmodern_begin_page(void *handle, int number)
void winmodern_begin_page(drawing *dr, int number)
{
}
void winmodern_begin_puzzle(void *handle, float xm, float xc,
void winmodern_begin_puzzle(drawing *dr, float xm, float xc,
float ym, float yc, int pw, int ph, float wmm)
{
frontend *fe = (frontend *)handle;
frontend *fe = (frontend *)dr->handle;
fe->printw = pw;
fe->printh = ph;
}
void winmodern_end_puzzle(void *handle)
void winmodern_end_puzzle(drawing *dr)
{
}
void winmodern_end_page(void *handle, int page)
void winmodern_end_page(drawing *dr, int page)
{
}
void winmodern_end_doc(void *handle)
void winmodern_end_doc(drawing *dr)
{
}

const struct drawing_api winmodern_drawing = {
1,
winmodern_draw_text,
winmodern_draw_rect,
winmodern_draw_line,
Expand Down
2 changes: 1 addition & 1 deletion drawing.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ void draw_line(drawing *dr, int x1, int y1, int x2, int y2, int colour)
float draw_scale(drawing *dr)
{
drawing_internal *dri = PRIVATE_CAST(dr);
return dri->pub.api->draw_scale(dr->handle);
return dri->pub.api->draw_scale(dr);
}

void draw_thick_line(drawing *dr, float thickness,
Expand Down
30 changes: 0 additions & 30 deletions misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,36 +324,6 @@ void game_colour_preset(frontend* fe, float* ret, enum colourpreset_type preset)
}
}

void game_colour_preset(frontend* fe, float* ret, enum colourpreset_type preset)
{
const char* envkey = NULL, *e;

switch (preset) {
case COLOURPRESET_ENTRY:
envkey = "COLOURPRESET_ENTRY";
frontend_default_colour(fe, ret);
ret[0] = 0.0F;
ret[1] *= 0.6F;
ret[2] = 0.0F;
break;
case COLOURPRESET_PENCIL:
envkey = "COLOURPRESET_PENCIL";
frontend_default_colour(fe, ret);
ret[0] *= 0.5F;
ret[1] *= 0.5F;
break;
default: return;
}

unsigned int r, g, b;
if ((e = getenv(envkey)) != NULL &&
sscanf(e, "%2x%2x%2x", &r, &g, &b) == 3) {
ret[0] = r / 255.0F;
ret[1] = g / 255.0F;
ret[2] = b / 255.0F;
}
}

void swap_regions(void *av, void *bv, size_t size)
{
char tmpbuf[512];
Expand Down
4 changes: 2 additions & 2 deletions puzzles.h
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ struct drawing_api {
int fillcolour, int outlinecolour);
void (*draw_circle)(drawing *dr, int cx, int cy, int radius,
int fillcolour, int outlinecolour);
float (*draw_scale)(void *handle);
float (*draw_scale)(drawing *dr);
void (*draw_update)(drawing *dr, int x, int y, int w, int h);
void (*clip)(drawing *dr, int x, int y, int w, int h);
void (*unclip)(drawing *dr);
Expand All @@ -831,7 +831,7 @@ struct drawing_api {
void (*blitter_free)(drawing *dr, blitter *bl);
void (*blitter_save)(drawing *dr, blitter *bl, int x, int y);
void (*blitter_load)(drawing *dr, blitter *bl, int x, int y);
void (*add_print_colour)(void *handle, int colour);
void (*add_print_colour)(drawing *dr, int colour);
void (*begin_doc)(drawing *dr, int pages);
void (*begin_page)(drawing *dr, int number);
void (*begin_puzzle)(drawing *dr, float xm, float xc,
Expand Down
4 changes: 2 additions & 2 deletions untangle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1936,10 +1936,10 @@ static void game_redraw(drawing *dr, game_drawstate *ds,
if (c == thisc) {
if (ui->vertex_numbers) {
char buf[80];
draw_circle(dr, ds->x[i], ds->y[i], DRAG_THRESHOLD, COL_BACKGROUND, COL_BACKGROUND);
draw_circle(dr, ds->x[i], ds->y[i], radius*2, COL_BACKGROUND, COL_BACKGROUND);
sprintf(buf, "%d", i);
draw_text(dr, ds->x[i], ds->y[i], FONT_VARIABLE,
DRAG_THRESHOLD*3/2,
radius*3,
ALIGN_VCENTRE|ALIGN_HCENTRE, c, buf);
} else {
draw_circle(dr, ds->x[i], ds->y[i], radius,
Expand Down

0 comments on commit b27b187

Please sign in to comment.