mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-04 23:29:42 +02:00
eeshow/: add icon loader and icons for "delta" and "diff"
This commit is contained in:
parent
5a7d37ce73
commit
e33f755179
@ -10,18 +10,22 @@
|
|||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
SHELL = /bin/bash
|
||||||
|
|
||||||
NAME = eeshow
|
NAME = eeshow
|
||||||
OBJS = main.o version.o \
|
OBJS = main.o version.o \
|
||||||
kicad/sch-parse.o kicad/sch-render.o kicad/lib-parse.o \
|
kicad/sch-parse.o kicad/sch-render.o kicad/lib-parse.o \
|
||||||
kicad/lib-render.o kicad/dwg.o kicad/delta.o \
|
kicad/lib-render.o kicad/dwg.o kicad/delta.o \
|
||||||
gui/gui.o gui/over.o gui/style.o gui/aoi.o gui/fmt-pango.o gui/input.o \
|
gui/gui.o gui/over.o gui/style.o gui/aoi.o gui/fmt-pango.o gui/input.o \
|
||||||
gui/progress.o gui/glabel.o gui/sheet.o gui/history.o gui/render.o \
|
gui/progress.o gui/glabel.o gui/sheet.o gui/history.o gui/render.o \
|
||||||
gui/help.o \
|
gui/help.o gui/icons.o \
|
||||||
file/file.o file/git-util.o file/git-file.o file/git-hist.o \
|
file/file.o file/git-util.o file/git-file.o file/git-hist.o \
|
||||||
gfx/style.o gfx/fig.o gfx/record.o gfx/cro.o gfx/diff.o gfx/gfx.o \
|
gfx/style.o gfx/fig.o gfx/record.o gfx/cro.o gfx/diff.o gfx/gfx.o \
|
||||||
gfx/text.o gfx/misc.o \
|
gfx/text.o gfx/misc.o \
|
||||||
misc/diag.o
|
misc/diag.o
|
||||||
|
|
||||||
|
ICONS = delta diff
|
||||||
|
|
||||||
CFLAGS = -g -Wall -Wextra -Wno-unused-parameter -Wshadow \
|
CFLAGS = -g -Wall -Wextra -Wno-unused-parameter -Wshadow \
|
||||||
-Wmissing-prototypes -Wmissing-declarations \
|
-Wmissing-prototypes -Wmissing-declarations \
|
||||||
-I. \
|
-I. \
|
||||||
@ -64,6 +68,17 @@ gui/help.c: help.inc
|
|||||||
clean::
|
clean::
|
||||||
rm -f help.inc
|
rm -f help.inc
|
||||||
|
|
||||||
|
icons/%.hex: icons/%.fig
|
||||||
|
$(BUILD) fig2dev -L png -S 4 -Z 0.48 $< | \
|
||||||
|
convert - -transparent white - | \
|
||||||
|
hexdump -v -e '/1 "0x%x, "' >$@; \
|
||||||
|
[ "$${PIPESTATUS[*]}" = "0 0 0" ] || { rm -f $@; exit 1; }
|
||||||
|
|
||||||
|
gui/icons.c: $(ICONS:%=icons/%.hex)
|
||||||
|
|
||||||
|
clean::
|
||||||
|
rm -f $(ICONS:%=icons/%.hex)
|
||||||
|
|
||||||
#----- Test sheet -------------------------------------------------------------
|
#----- Test sheet -------------------------------------------------------------
|
||||||
|
|
||||||
sch:
|
sch:
|
||||||
|
@ -430,6 +430,7 @@ int gui(unsigned n_args, char **args, bool recurse, int limit)
|
|||||||
g_signal_connect(window, "destroy",
|
g_signal_connect(window, "destroy",
|
||||||
G_CALLBACK(gtk_main_quit), NULL);
|
G_CALLBACK(gtk_main_quit), NULL);
|
||||||
|
|
||||||
|
icons_init();
|
||||||
sheet_setup(&ctx);
|
sheet_setup(&ctx);
|
||||||
render_setup(&ctx);
|
render_setup(&ctx);
|
||||||
|
|
||||||
|
73
eeshow/gui/icons.c
Normal file
73
eeshow/gui/icons.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* gui/icons.c - Icons
|
||||||
|
*
|
||||||
|
* Written 2016 by Werner Almesberger
|
||||||
|
* Copyright 2016 by Werner Almesberger
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <cairo/cairo.h>
|
||||||
|
|
||||||
|
#include "gui/icons.h"
|
||||||
|
|
||||||
|
|
||||||
|
cairo_surface_t *icon_delta;
|
||||||
|
cairo_surface_t *icon_diff;
|
||||||
|
|
||||||
|
|
||||||
|
struct read_ctx {
|
||||||
|
uint8_t *data;
|
||||||
|
unsigned left;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t data_delta[] = {
|
||||||
|
#include "icons/delta.hex"
|
||||||
|
};
|
||||||
|
|
||||||
|
static uint8_t data_diff[] = {
|
||||||
|
#include "icons/diff.hex"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static cairo_status_t read_data(void *user, unsigned char *data,
|
||||||
|
unsigned length)
|
||||||
|
{
|
||||||
|
struct read_ctx *read_ctx = user;
|
||||||
|
|
||||||
|
if (!read_ctx->left)
|
||||||
|
return CAIRO_STATUS_READ_ERROR;
|
||||||
|
if (length > read_ctx->left)
|
||||||
|
length = read_ctx->left;
|
||||||
|
memcpy(data, read_ctx->data, length);
|
||||||
|
read_ctx->data += length;
|
||||||
|
read_ctx->left -= length;
|
||||||
|
return CAIRO_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static cairo_surface_t *get_icon(uint8_t *data, unsigned size)
|
||||||
|
{
|
||||||
|
struct read_ctx read_ctx = {
|
||||||
|
.data = data,
|
||||||
|
.left = size,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return cairo_image_surface_create_from_png_stream(read_data, &read_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void icons_init(void)
|
||||||
|
{
|
||||||
|
icon_delta = get_icon(data_delta, sizeof(data_delta));
|
||||||
|
icon_diff = get_icon(data_diff, sizeof(data_diff));
|
||||||
|
|
||||||
|
}
|
25
eeshow/gui/icons.h
Normal file
25
eeshow/gui/icons.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* gui/icons.h - Icons
|
||||||
|
*
|
||||||
|
* Written 2016 by Werner Almesberger
|
||||||
|
* Copyright 2016 by Werner Almesberger
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GUI_ICONS_H
|
||||||
|
#define GUI_ICONS_H
|
||||||
|
|
||||||
|
#include <cairo/cairo.h>
|
||||||
|
|
||||||
|
|
||||||
|
extern cairo_surface_t *icon_delta;
|
||||||
|
extern cairo_surface_t *icon_diff;
|
||||||
|
|
||||||
|
|
||||||
|
void icons_init(void);
|
||||||
|
|
||||||
|
#endif /* !GUI_ICONS_H */
|
15
eeshow/icons/delta.fig
Normal file
15
eeshow/icons/delta.fig
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Metric
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
2 3 0 0 0 0 50 -1 20 0.000 1 0 -1 0 0 4
|
||||||
|
4950 6075 5535 4725 6300 6075 4950 6075
|
||||||
|
2 3 0 1 0 7 40 -1 20 0.000 1 0 -1 0 0 4
|
||||||
|
5130 5940 5490 5085 5985 5940 5130 5940
|
||||||
|
2 2 0 1 7 7 100 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
4950 6075 6300 6075 6300 4725 4950 4725 4950 6075
|
15
eeshow/icons/diff.fig
Normal file
15
eeshow/icons/diff.fig
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Metric
|
||||||
|
A4
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
2 2 0 1 7 7 100 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
4950 6075 6300 6075 6300 4725 4950 4725 4950 6075
|
||||||
|
2 3 0 10 4 7 50 -1 -1 0.000 1 0 -1 0 0 4
|
||||||
|
4995 6030 5400 5085 5850 6030 4995 6030
|
||||||
|
2 3 0 12 12 7 40 -1 -1 0.000 1 0 7 0 0 4
|
||||||
|
5400 5760 5805 4815 6255 5760 5400 5760
|
Loading…
Reference in New Issue
Block a user