Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Dec 2019 15:21:49 +0000 (UTC)
From:      Boris Samorodov <bsam@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r519021 - in head/print/photoprint: . files
Message-ID:  <201912041521.xB4FLnZc096090@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bsam
Date: Wed Dec  4 15:21:49 2019
New Revision: 519021
URL: https://svnweb.freebsd.org/changeset/ports/519021

Log:
  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.

Added:
  head/print/photoprint/files/
  head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp   (contents, props changed)
Modified:
  head/print/photoprint/Makefile

Modified: head/print/photoprint/Makefile
==============================================================================
--- head/print/photoprint/Makefile	Wed Dec  4 15:02:47 2019	(r519020)
+++ head/print/photoprint/Makefile	Wed Dec  4 15:21:49 2019	(r519021)
@@ -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
 

Added: head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/print/photoprint/files/patch-gp_cppsupport_gprinter.cpp	Wed Dec  4 15:21:49 2019	(r519021)
@@ -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;
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912041521.xB4FLnZc096090>