mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-25 20:59: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.
|
||||
#
|
||||
|
||||
SHELL = /bin/bash
|
||||
|
||||
NAME = eeshow
|
||||
OBJS = main.o version.o \
|
||||
kicad/sch-parse.o kicad/sch-render.o kicad/lib-parse.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/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 \
|
||||
gfx/style.o gfx/fig.o gfx/record.o gfx/cro.o gfx/diff.o gfx/gfx.o \
|
||||
gfx/text.o gfx/misc.o \
|
||||
misc/diag.o
|
||||
|
||||
ICONS = delta diff
|
||||
|
||||
CFLAGS = -g -Wall -Wextra -Wno-unused-parameter -Wshadow \
|
||||
-Wmissing-prototypes -Wmissing-declarations \
|
||||
-I. \
|
||||
@ -64,6 +68,17 @@ gui/help.c: help.inc
|
||||
clean::
|
||||
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 -------------------------------------------------------------
|
||||
|
||||
sch:
|
||||
|
@ -430,6 +430,7 @@ int gui(unsigned n_args, char **args, bool recurse, int limit)
|
||||
g_signal_connect(window, "destroy",
|
||||
G_CALLBACK(gtk_main_quit), NULL);
|
||||
|
||||
icons_init();
|
||||
sheet_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