1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

print/photoprint: Fix build with gitenprint 5.3.

Let's try to make photoprint and libgutenprint friends.
Bump PORTREVISION. It is not needed by rules, but I'd prefer to.
This commit is contained in:
Boris Samorodov 2019-12-04 15:21:49 +00:00
parent e40c0b0ccd
commit 6a5ac4b0e4
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=519021
2 changed files with 130 additions and 5 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= photoprint
DISTVERSION= 0.4.2-pre2
PORTREVISION= 8
PORTREVISION= 9
CATEGORIES= print graphics
MASTER_SITES= http://www.blackfiveimaging.co.uk/photoprint/
@ -11,8 +11,6 @@ COMMENT= Utility to print multiple images per sheet
LICENSE= GPLv2
BROKEN= fails to build
LIB_DEPENDS= libcups.so:print/cups \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
@ -32,8 +30,6 @@ LIBS+= -lX11
INSTALLS_ICONS= yes
post-patch:
@${REINPLACE_CMD} -e 's|glib/gstrfuncs.h|glib.h|g' \
${WRKSRC}/gp_cppsupport/gprinter.cpp
@${REINPLACE_CMD} -e 's|cups/cups.h|cups/ppd.h|g' \
${WRKSRC}/stp_support/printerqueues_unix.c

View File

@ -0,0 +1,129 @@
--- gp_cppsupport/gprinter.cpp.orig 2010-04-30 03:44:31.000000000 +0400
+++ gp_cppsupport/gprinter.cpp 2019-12-04 18:01:52.055955000 +0300
@@ -22,7 +22,6 @@
#include <gutenprint/gutenprint.h>
#include <glib.h>
-#include <glib/gstrfuncs.h>
#include <glib/gprintf.h>
#include "../imagesource/imagesource.h"
@@ -418,59 +417,72 @@ void GPrinter::Print(ImageSource *src,int xpos,int ypo
void GPrinter::GetImageableArea()
{
-// pagewidth=pageheight=0;
-// stp_get_media_size(stpvars, &pagewidth, &pageheight);
+ stp_dimension_t double_pagewidth, double_pageheight;
+ stp_get_media_size(stpvars, &double_pagewidth, &double_pageheight);
-// Debug[TRACE] << "Media size returned: " << pagewidth << " by " << pageheight << endl;
+ // *** HACK ***
+ // Gutenprint uses doubles... Either rewrite all funclions to use doubles or deal with it just here.
- const char *papersize=stp_get_string_parameter(stpvars,"PageSize");
- bool gotpapersize=false;
- if(papersize)
- {
- const stp_papersize_t *paper=stp_get_papersize_by_name(papersize);
- if(paper)
+ pagewidth=(int)double_pagewidth;
+ pageheight=(int)double_pageheight;
+
+ Debug[TRACE] << "Media size returned: " << pagewidth << " by " << pageheight << endl;
+
+ // From gutenprint TFM:
+ // If the media size is invalid, width and height will be set to -1.
+
+ if (pagewidth != -1 && pageheight != -1) {
+
+ // From gutenprint TFM:
+ // Values of 0 for width or height indicate that the dimension
+ // is variable, so that custom page sizes or roll paper can be used.
+ // In this case, the size limit should be used to determine maximum and
+ // minimum values permitted.
+
+ if(!pagewidth)
{
- gotpapersize=true;
- if(paper->width)
- {
- pagewidth=minwidth=maxwidth=paper->width;
- stp_set_page_width(stpvars,pagewidth);
- Debug[TRACE] << "Width: " << pagewidth << endl;
- }
- else
- {
- int mw,mh,nw,nh;
- pagewidth=stp_get_page_width(stpvars);
- stp_get_size_limit(stpvars,&mw,&mh,&nw,&nh);
- minwidth=nw;
- maxwidth=mw;
- Debug[TRACE] << "Custom width..." << endl;
- }
- if(paper->height)
- {
- pageheight=minheight=maxheight=paper->height;
- stp_set_page_height(stpvars,pageheight);
- Debug[TRACE] << "Height: " << pageheight << endl;
- }
- else
- {
- int mw,mh,nw,nh;
- pageheight=stp_get_page_height(stpvars);
- stp_get_size_limit(stpvars,&mw,&mh,&nw,&nh);
- minheight=nh;
- maxheight=mh;
- Debug[TRACE] << "Custom height..." << endl;
- }
+ stp_dimension_t dmw,dmh,dnw,dnh;
+ double_pagewidth=stp_get_page_width(stpvars);
+ stp_get_size_limit(stpvars,&dmw,&dmh,&dnw,&dnh);
+
+ // *** HACK ***
+ // Gutenprint uses doubles... Either rewrite all funclions to use doubles or deal with it just here.
+
+ minwidth=(int)dnw;
+ maxwidth=(int)dmw;
+ Debug[TRACE] << "Custom width..." << endl;
}
+
+ if(!pageheight)
+ {
+ stp_dimension_t dmw,dmh,dnw,dnh;
+ double_pageheight=stp_get_page_height(stpvars);
+ stp_get_size_limit(stpvars,&dmw,&dmh,&dnw,&dnh);
+
+ // *** HACK ***
+ // Gutenprint uses doubles... Either rewrite all funclions to use doubles or deal with it just here.
+
+ minheight=(int)dnh;
+ maxheight=(int)dmh;
+ Debug[TRACE] << "Custom height..." << endl;
+ }
}
- if(!gotpapersize)
- {
- pagewidth=pageheight=0;
- stp_get_media_size(stpvars, &pagewidth, &pageheight);
- }
+ else {
+ // How should we treat an invalid media size?
+ }
+ stp_dimension_t double_l,double_r,double_t,double_b;
+ stp_get_imageable_area(stpvars, &double_l, &double_r, &double_b, &double_t);
+
int l,r,t,b;
- stp_get_imageable_area(stpvars, &l, &r, &b, &t);
+
+ // *** HACK ***
+ // Gutenprint uses doubles... Either rewrite all funclions to use doubles or deal with it just here.
+
+ l=(int)double_l;
+ r=(int)double_r;
+ t=(int)double_t;
+ b=(int)double_b;
Debug[TRACE] << "Imageable area from GP: L: " << l << ", R: " << r << ", T: " << t << ", B: " << b << endl;