Index: head/print/photoprint/Makefile =================================================================== --- head/print/photoprint/Makefile (revision 519020) +++ head/print/photoprint/Makefile (revision 519021) @@ -1,40 +1,36 @@ # $FreeBSD$ PORTNAME= photoprint DISTVERSION= 0.4.2-pre2 -PORTREVISION= 8 +PORTREVISION= 9 CATEGORIES= print graphics MASTER_SITES= http://www.blackfiveimaging.co.uk/photoprint/ MAINTAINER= bsam@FreeBSD.org 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 \ libgutenprint.so:print/gutenprint \ liblcms.so:graphics/lcms \ libnetpbm.so:graphics/netpbm \ libpng.so:graphics/png \ libtiff.so:graphics/tiff GNU_CONFIGURE= yes USES= compiler:c++11-lang desktop-file-utils gettext gnome jpeg \ libtool localbase pkgconfig xorg USE_GNOME= cairo gdkpixbuf2 gtk20 USE_XORG= x11 USE_CXXSTD= gnu++98 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 .include Index: head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp =================================================================== --- head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp (nonexistent) +++ head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp (revision 519021) @@ -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 + + #include +-#include + #include + + #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; + Property changes on: head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property