add #ifdefs for missing libjpeg libraries to avoid link problems, remove some warnings from compilers/glib versions that tave some functions marked as -Wunused-result
This commit is contained in:
parent
56697dfc43
commit
d30715bc2c
|
|
@ -65,15 +65,18 @@ p{padding: 15px 30px 10px;}
|
|||
Tck/Tk versions may vary on different systems, 8.4, 8.5, 8.6 versions are all good.
|
||||
</p>
|
||||
<pre class="code">
|
||||
libx11-6 libx11-dev
|
||||
libxrender1 libxrender-dev
|
||||
libxcb1 libx11-xcb-dev
|
||||
libcairo2 libcairo2-dev
|
||||
tcl8.6 tcl8.6-dev
|
||||
tk8.6 tk8.6-dev
|
||||
flex bison
|
||||
libxpm4 libxpm-dev
|
||||
libjpeg-dev
|
||||
LIBRARIES DEVELOPMENT FILES
|
||||
-----------------------------------------------------------
|
||||
libx11-6 libx11-dev
|
||||
libxrender1 libxrender-dev
|
||||
libxcb1 libx11-xcb-dev
|
||||
libcairo2 libcairo2-dev
|
||||
tcl8.6 tcl8.6-dev
|
||||
tk8.6 tk8.6-dev
|
||||
flex bison
|
||||
libxpm4 libxpm-dev
|
||||
libjpeg62-turbo or libjpeg libjpeg-dev
|
||||
|
||||
# terminal program and editor used by default by xschem:
|
||||
# alternative programs can be specified in xschemrc by
|
||||
# setting tcl variables 'terminal' and 'editor', respectively.
|
||||
|
|
|
|||
27
src/draw.c
27
src/draw.c
|
|
@ -3910,8 +3910,10 @@ void inspect_image(cairo_surface_t* surface)
|
|||
*/
|
||||
void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2, int rot, int flip)
|
||||
{
|
||||
#if HAS_CAIRO == 1
|
||||
#if HAS_CAIRO==1
|
||||
#if defined(HAS_LIBJPEG)
|
||||
int jpeg_quality=75;
|
||||
#endif
|
||||
const char *ptr;
|
||||
int w,h;
|
||||
double x, y, rw, rh;
|
||||
|
|
@ -3944,9 +3946,11 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
}
|
||||
my_strncpy(filename, get_tok_value(r->prop_ptr, "image", 0), S(filename));
|
||||
my_strdup(_ALLOC_ID_, &filter, get_tok_value(r->prop_ptr, "filter", 0));
|
||||
#if defined(HAS_LIBJPEG)
|
||||
ptr = get_tok_value(r->prop_ptr, "quality", 0);
|
||||
jpeg_quality = 75;
|
||||
if(ptr[0]) jpeg_quality = atoi(ptr);
|
||||
#endif
|
||||
/* read image from in-memory buffer ... */
|
||||
if(emb_ptr && emb_ptr->image) {
|
||||
; /* nothing to do, image is already created */
|
||||
|
|
@ -3962,7 +3966,9 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
if(jpg == 0) {
|
||||
emb_ptr->image = cairo_image_surface_create_from_png_stream(png_reader, &closure);
|
||||
} else if(jpg == 1) {
|
||||
#if defined(HAS_LIBJPEG)
|
||||
emb_ptr->image = cairo_image_surface_create_from_jpeg_mem(closure.buffer, closure.size);
|
||||
#endif
|
||||
}
|
||||
if(! emb_ptr->image || cairo_surface_status(emb_ptr->image) != CAIRO_STATUS_SUCCESS) {
|
||||
dbg(0, "draw_image(): failure creating image surface from \"image_data\" attribute\n");
|
||||
|
|
@ -3988,8 +3994,12 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
if(filesize) {
|
||||
fd = fopen(filename, "r");
|
||||
if(fd) {
|
||||
size_t bytes_read;
|
||||
filedata = my_malloc(_ALLOC_ID_, filesize);
|
||||
fread(filedata, filesize, 1, fd);
|
||||
if((bytes_read = fread(filedata, filesize, 1, fd)) < filesize) {
|
||||
filesize = bytes_read;
|
||||
dbg(0, "draw_image(): less bytes read than expected from %s, got %ld bytes\n", filename, bytes_read);
|
||||
}
|
||||
fclose(fd);
|
||||
}
|
||||
}
|
||||
|
|
@ -4003,7 +4013,9 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
if(jpg == 0) {
|
||||
emb_ptr->image = cairo_image_surface_create_from_png_stream(png_reader, &closure);
|
||||
} else if(jpg == 1) {
|
||||
#if defined(HAS_LIBJPEG)
|
||||
emb_ptr->image = cairo_image_surface_create_from_jpeg_mem(closure.buffer, closure.size);
|
||||
#endif
|
||||
}
|
||||
if(! emb_ptr->image || cairo_surface_status(emb_ptr->image) != CAIRO_STATUS_SUCCESS) {
|
||||
dbg(0, "draw_image(): failure creating image surface with filtered data from %s\n", filename);
|
||||
|
|
@ -4022,7 +4034,12 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
header[0] = '\0';
|
||||
fd = fopen(filename, "r");
|
||||
if(fd) {
|
||||
fread(header, size, 1, fd);
|
||||
size_t bytes_read;
|
||||
if((bytes_read = fread(header, size, 1, fd)) < size) {
|
||||
size = bytes_read;
|
||||
dbg(0, "draw_image(): less bytes read than expected from %s, got %ld bytes\n", filename, bytes_read);
|
||||
}
|
||||
|
||||
fclose(fd);
|
||||
}
|
||||
if(!strncmp(header, "\x89PNG", 4)) jpg = 0;
|
||||
|
|
@ -4034,7 +4051,9 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
if(jpg == 0) {
|
||||
emb_ptr->image = cairo_image_surface_create_from_png(filename);
|
||||
} else if(jpg == 1) {
|
||||
#if defined(HAS_LIBJPEG)
|
||||
emb_ptr->image = cairo_image_surface_create_from_jpeg(filename);
|
||||
#endif
|
||||
}
|
||||
if(! emb_ptr->image || cairo_surface_status(emb_ptr->image) != CAIRO_STATUS_SUCCESS) {
|
||||
dbg(0, "draw_image(): failure creating image surface from %s\n", filename);
|
||||
|
|
@ -4046,7 +4065,9 @@ void draw_image(int dr, xRect *r, double *x1, double *y1, double *x2, double *y2
|
|||
cairo_surface_write_to_png_stream(emb_ptr->image, png_writer, &closure);
|
||||
} else if(jpg == 1) {
|
||||
/* write JPG to in-memory buffer */
|
||||
#if defined(HAS_LIBJPEG)
|
||||
cairo_image_surface_write_to_jpeg_mem(emb_ptr->image, &closure.buffer, &closure.pos, jpeg_quality);
|
||||
#endif
|
||||
}
|
||||
encoded_data = base64_encode(closure.buffer, closure.pos, &olength, 0);
|
||||
my_free(_ALLOC_ID_, &closure.buffer);
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ static void child_handler(int signum)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
FILE *retval = 0;
|
||||
#ifdef __unix__
|
||||
int stdin_is_a_fifo = 0;
|
||||
struct stat statbuf;
|
||||
|
|
@ -137,8 +138,10 @@ int main(int argc, char **argv)
|
|||
if(cli_opt_detach) {
|
||||
fclose(stdin);
|
||||
#ifdef __unix__
|
||||
freopen("/dev/null", "w", stdout);
|
||||
freopen("/dev/null", "w", stderr);
|
||||
retval = freopen("/dev/null", "w", stdout);
|
||||
if(!retval) fprintf(stderr, "main(): freopen stdout to /dev/null failed\n");
|
||||
retval = freopen("/dev/null", "w", stderr);
|
||||
if(!retval) fprintf(stderr, "main(): freopen stderr to /dev/null failed\n");
|
||||
#else
|
||||
freopen("nul", "w", stdout);
|
||||
freopen("nul", "w", stderr);
|
||||
|
|
|
|||
13
src/save.c
13
src/save.c
|
|
@ -76,8 +76,8 @@ int filter_data(const char *din, const size_t ilen,
|
|||
}
|
||||
|
||||
dbg(1, "filter_data(): ilen=%ld, cmd=%s\n", ilen, cmd);
|
||||
pipe(p1);
|
||||
pipe(p2);
|
||||
if(pipe(p1) == -1) dbg(0, "filter_data(): pipe creation failed\n");
|
||||
if(pipe(p2) == -1) dbg(0, "filter_data(): pipe creation failed\n");
|
||||
|
||||
dbg(1, "p1[0] = %d\n", p1[0]);
|
||||
dbg(1, "p1[1] = %d\n", p1[1]);
|
||||
|
|
@ -104,10 +104,10 @@ int filter_data(const char *din, const size_t ilen,
|
|||
close(p1[1]); /* only read from p1 */
|
||||
close(p2[0]); /* only write to p2 */
|
||||
close(0); /* dup2(p1[0],0); */ /* connect read side of read pipe to stdin */
|
||||
dup(p1[0]);
|
||||
if(dup(p1[0]) == -1) dbg(0, "filter_data(): dup() call failed\n");
|
||||
close(p1[0]);
|
||||
close(1); /* dup2(p2[1],1); */ /* connect write side of write pipe to stdout */
|
||||
dup(p2[1]);
|
||||
if(dup(p2[1]) == -1) dbg(0, "filter_data(): dup() call failed\n");
|
||||
close(p2[1]);
|
||||
|
||||
#if 1
|
||||
|
|
@ -775,8 +775,11 @@ char *base64_from_file(const char *f, size_t *length)
|
|||
len = st.st_size;
|
||||
fd = fopen(f, fopen_read_mode);
|
||||
if(fd) {
|
||||
size_t bytes_read;
|
||||
s = my_malloc(_ALLOC_ID_, len);
|
||||
fread(s, len, 1, fd);
|
||||
if((bytes_read = fread(s, len, 1, fd)) < len) {
|
||||
dbg(0, "base64_from_file(): less bytes FROM %S, got %ld bytes\n", f, bytes_read);
|
||||
}
|
||||
fclose(fd);
|
||||
b64s = base64_encode(s, len, length, 1);
|
||||
my_free(_ALLOC_ID_, &s);
|
||||
|
|
|
|||
Loading…
Reference in New Issue