From 41e5e3523d98feb46e4368a2bb5b57b99ec46236 Mon Sep 17 00:00:00 2001 From: mat Date: Tue, 26 Apr 2016 12:42:04 +0000 Subject: Update to 7.2.2. PR: 209043 Submitted by: tkato432 yahoo com Sponsored by: Absolight --- graphics/ipe/Makefile | 36 +- graphics/ipe/distinfo | 4 +- graphics/ipe/files/patch-include__ipebase.h | 11 - graphics/ipe/files/patch-include__ipedoc.h | 10 - graphics/ipe/files/patch-include__ipereference.h | 10 - graphics/ipe/files/patch-include_ipebase.h | 14 + .../ipe/files/patch-ipecairo__ipecairopainter.cpp | 10 - graphics/ipe/files/patch-ipecairo__ipestdfonts.cpp | 10 - graphics/ipe/files/patch-ipelib__Makefile | 10 - graphics/ipe/files/patch-ipelib__ipebitmap.cpp | 42 - graphics/ipe/files/patch-ipelib__ipedct.cpp | 1468 -------------------- graphics/ipe/files/patch-ipelib__ipegeo.cpp | 11 - graphics/ipe/files/patch-ipelib__ipelatex.cpp | 11 - graphics/ipe/files/patch-ipelib__ipeshape.cpp | 10 - graphics/ipe/files/patch-ipelib_ipeplatform.cpp | 88 -- graphics/ipe/pkg-descr | 2 +- graphics/ipe/pkg-plist | 49 +- 17 files changed, 71 insertions(+), 1725 deletions(-) delete mode 100644 graphics/ipe/files/patch-include__ipebase.h delete mode 100644 graphics/ipe/files/patch-include__ipedoc.h delete mode 100644 graphics/ipe/files/patch-include__ipereference.h create mode 100644 graphics/ipe/files/patch-include_ipebase.h delete mode 100644 graphics/ipe/files/patch-ipecairo__ipecairopainter.cpp delete mode 100644 graphics/ipe/files/patch-ipecairo__ipestdfonts.cpp delete mode 100644 graphics/ipe/files/patch-ipelib__Makefile delete mode 100644 graphics/ipe/files/patch-ipelib__ipebitmap.cpp delete mode 100644 graphics/ipe/files/patch-ipelib__ipedct.cpp delete mode 100644 graphics/ipe/files/patch-ipelib__ipegeo.cpp delete mode 100644 graphics/ipe/files/patch-ipelib__ipelatex.cpp delete mode 100644 graphics/ipe/files/patch-ipelib__ipeshape.cpp delete mode 100644 graphics/ipe/files/patch-ipelib_ipeplatform.cpp diff --git a/graphics/ipe/Makefile b/graphics/ipe/Makefile index 45776ba1416f..fee58cf473a9 100644 --- a/graphics/ipe/Makefile +++ b/graphics/ipe/Makefile @@ -2,44 +2,36 @@ # $FreeBSD$ PORTNAME= ipe -PORTVERSION= 7.1.7 +PORTVERSION= 7.2.2 DISTVERSIONSUFFIX= -src CATEGORIES= graphics -MASTER_SITES= SF/${PORTNAME}${PORTVERSION:R:R}/${PORTNAME}/${PORTVERSION:R} +MASTER_SITES= https://dl.bintray.com/otfried/generic/ipe/${PORTVERSION:R}/ MAINTAINER= ports@FreeBSD.org COMMENT= Extensible vector graphics editor with LaTeX support -BROKEN= unfetchable - LICENSE= GPLv3+ RUN_DEPENDS= xdg-open:devel/xdg-utils WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}/src -USES= dos2unix gmake iconv jpeg lua:52 pkgconfig -DOS2UNIX_FILES= ipelib/Makefile +USES= compiler:c++11-lib gmake jpeg lua:52 pkgconfig USE_GNOME= cairo -USE_QT4= gui moc_build qmake_build rcc_build uic_build +USE_QT5= widgets buildtools_build qmake_build USE_TEX= pdftex MAKE_ENV= DL_LIBS="" \ - DLL_CFLAGS="-fPIC" \ - ICONV_CFLAGS="-I${ICONV_PREFIX}/include" \ - ICONV_LIBS="-L${ICONV_PREFIX}/lib ${ICONV_LIB}" \ INSTALL_DIR="${MKDIR}" \ INSTALL_FILES="${INSTALL_DATA}" \ INSTALL_SCRIPTS="${INSTALL_SCRIPT}" \ INSTALL_PROGRAMS="${INSTALL_PROGRAM}" \ INSTALL_ROOT="${STAGEDIR}" \ - IPE_USE_ICONV="-DIPE_USE_ICONV" \ IPEDOCDIR="${DOCSDIR}" \ IPEMANDIR="${MANPREFIX}/man/man1" \ IPEPREFIX="${PREFIX}" \ JPEG_CFLAGS="-I${LOCALBASE}/include" \ JPEG_LIBS="-L${LOCALBASE}/lib -ljpeg" \ - LUA_CFLAGS="-I${LUA_INCDIR}" \ - LUA_LIBS="-L${LUA_LIBDIR} -llua-${LUA_VER}" \ + LUA_PACKAGE="lua-${LUA_VER}" \ MOC="${MOC}" USE_LDCONFIG= yes @@ -47,33 +39,21 @@ PLIST_SUB= VERSION="${PORTVERSION}" PORTDOCS= * -DESKTOP_ENTRIES="Ipe" "" "${DATADIR}/${PORTVERSION}/ipe.png" \ - "${PORTNAME}" "" true +DESKTOP_ENTRIES="Ipe" "" "ipe" "ipe" "" "" OPTIONS_DEFINE= DOCS post-patch: - @cd ${WRKSRC}/../fontmaps && ${SED} -e \ - 's|/usr/share|${LOCALBASE}/share| ; \ - s|type1/gsfonts|ghostscirpt/fonts|' \ - < gsfonts-fontmap.xml > fontmap.xml @${REINPLACE_CMD} -e \ 's|^INSTALL_|#INSTALL_| ; \ /-O2/s|^|#|' ${WRKSRC}/common.mak @${REINPLACE_CMD} -e \ 's|\([[:blank:]]\)=|\1?=|' ${WRKSRC}/config.mak - @${REINPLACE_CMD} -e \ - '/$$(INSTALL_ROOT)$$(IPEDOCDIR)/s|^|#|' ${WRKSRC}/ipe/Makefile @${REINPLACE_CMD} -e \ '/%s/s|gnome-open|xdg-open|' ${WRKSRC}/ipe/lua/prefs.lua - @${REINPLACE_CMD} -e \ - 's|QT__H|QT_H|' ${WRKSRC}/ipeui/ipeui_qt.h post-install: - (cd ${WRKSRC}/../fontmaps && ${INSTALL_DATA} fontmap.xml \ - ${STAGEDIR}${DATADIR}/${PORTVERSION}) - @${MKDIR} ${STAGEDIR}${DOCSDIR} - @(cd ${WRKSRC}/../build/doc && ${COPYTREE_SHARE} . \ - ${STAGEDIR}${DOCSDIR}) + @${LN} -sf ${DATADIR}${PORTVERSION}/ipe.png \ + ${STAGEDIR}${PREFIX}/share/pixmaps .include diff --git a/graphics/ipe/distinfo b/graphics/ipe/distinfo index ed683d162600..2d4cc57790aa 100644 --- a/graphics/ipe/distinfo +++ b/graphics/ipe/distinfo @@ -1,2 +1,2 @@ -SHA256 (ipe-7.1.7-src.tar.gz) = ec670cd7f0fa521271fc54bf9b663570d82280bdbe405be6de59535fec7c00d2 -SIZE (ipe-7.1.7-src.tar.gz) = 1758157 +SHA256 (ipe-7.2.2-src.tar.gz) = a70181492ac2d83546b5c88cb15da382b906d905ea3babe700bf98c822821d68 +SIZE (ipe-7.2.2-src.tar.gz) = 1912583 diff --git a/graphics/ipe/files/patch-include__ipebase.h b/graphics/ipe/files/patch-include__ipebase.h deleted file mode 100644 index dcd1d8be7291..000000000000 --- a/graphics/ipe/files/patch-include__ipebase.h +++ /dev/null @@ -1,11 +0,0 @@ ---- include/ipebase.h.orig 2013-09-13 12:51:35.422094300 +0400 -+++ include/ipebase.h 2013-09-13 12:52:10.808993351 +0400 -@@ -38,6 +38,8 @@ - #include - #include - #include -+#include -+#include - - // -------------------------------------------------------------------- - diff --git a/graphics/ipe/files/patch-include__ipedoc.h b/graphics/ipe/files/patch-include__ipedoc.h deleted file mode 100644 index ee3ab1140025..000000000000 --- a/graphics/ipe/files/patch-include__ipedoc.h +++ /dev/null @@ -1,10 +0,0 @@ ---- include/ipedoc.h.orig -+++ include/ipedoc.h -@@ -37,6 +37,7 @@ - #include "ipeimage.h" - #include "ipestyle.h" - #include "ipefontpool.h" -+#include - - // -------------------------------------------------------------------- - diff --git a/graphics/ipe/files/patch-include__ipereference.h b/graphics/ipe/files/patch-include__ipereference.h deleted file mode 100644 index 353e053875a0..000000000000 --- a/graphics/ipe/files/patch-include__ipereference.h +++ /dev/null @@ -1,10 +0,0 @@ ---- include/ipereference.h.orig -+++ include/ipereference.h -@@ -33,6 +33,7 @@ - #define IPEREF_H - - #include "ipeobject.h" -+#include - - // -------------------------------------------------------------------- - diff --git a/graphics/ipe/files/patch-include_ipebase.h b/graphics/ipe/files/patch-include_ipebase.h new file mode 100644 index 000000000000..8cdada47a005 --- /dev/null +++ b/graphics/ipe/files/patch-include_ipebase.h @@ -0,0 +1,14 @@ +--- include/ipebase.h.orig 2016-01-24 11:16:26 UTC ++++ include/ipebase.h +@@ -51,9 +51,9 @@ + + using uchar = unsigned char; + +-#if defined(WIN32) || defined(__APPLE__) ++// #if defined(WIN32) || defined(__APPLE__) + using uint = unsigned int; +-#endif ++// #endif + + #ifdef WIN32 + #define IPESEP ('\\') diff --git a/graphics/ipe/files/patch-ipecairo__ipecairopainter.cpp b/graphics/ipe/files/patch-ipecairo__ipecairopainter.cpp deleted file mode 100644 index 6906362c4f7d..000000000000 --- a/graphics/ipe/files/patch-ipecairo__ipecairopainter.cpp +++ /dev/null @@ -1,10 +0,0 @@ ---- ipecairo/ipecairopainter.cpp.orig -+++ ipecairo/ipecairopainter.cpp -@@ -32,6 +32,7 @@ - #include "ipepdfparser.h" - #include "ipecairopainter.h" - #include "ipefonts.h" -+#include - - using namespace ipe; - diff --git a/graphics/ipe/files/patch-ipecairo__ipestdfonts.cpp b/graphics/ipe/files/patch-ipecairo__ipestdfonts.cpp deleted file mode 100644 index 0dae3521f3aa..000000000000 --- a/graphics/ipe/files/patch-ipecairo__ipestdfonts.cpp +++ /dev/null @@ -1,10 +0,0 @@ ---- ipecairo/ipestdfonts.cpp.orig -+++ ipecairo/ipestdfonts.cpp -@@ -30,6 +30,7 @@ - */ - - #include "ipebase.h" -+#include - - using namespace ipe; - diff --git a/graphics/ipe/files/patch-ipelib__Makefile b/graphics/ipe/files/patch-ipelib__Makefile deleted file mode 100644 index 6ddfbc200e80..000000000000 --- a/graphics/ipe/files/patch-ipelib__Makefile +++ /dev/null @@ -1,10 +0,0 @@ ---- ipelib/Makefile.orig -+++ ipelib/Makefile -@@ -27,6 +27,7 @@ - ipexml.cpp \ - ipeattributes.cpp \ - ipebitmap.cpp \ -+ ipedct.cpp \ - ipeshape.cpp \ - ipegroup.cpp \ - ipeimage.cpp \ diff --git a/graphics/ipe/files/patch-ipelib__ipebitmap.cpp b/graphics/ipe/files/patch-ipelib__ipebitmap.cpp deleted file mode 100644 index 2907cec3c4d6..000000000000 --- a/graphics/ipe/files/patch-ipelib__ipebitmap.cpp +++ /dev/null @@ -1,42 +0,0 @@ ---- ipelib/ipebitmap.cpp.orig -+++ ipelib/ipebitmap.cpp -@@ -32,7 +32,9 @@ - #include "ipeutils.h" - #include - -+#if 0 - #include -+#endif - #include - - using namespace ipe; -@@ -332,6 +334,7 @@ - - // -------------------------------------------------------------------- - -+#if 0 - bool dctDecode(Buffer dctData, Buffer pixelData, int components) - { - tjhandle handle = tjInitDecompress(); -@@ -364,6 +367,9 @@ - tjDestroy(handle); - return true; - } -+#else -+bool dctDecode(Buffer dctData, Buffer pixelData); -+#endif - - //! Convert bitmap data to a height x width pixel array in rgb format. - /*! Returns empty buffer if it cannot decode the bitmap information. -@@ -388,7 +394,11 @@ - return Buffer(); - } else if (filter() == EDCTDecode) { - pixels = Buffer(width() * height() * components()); -+#if 0 - if (!dctDecode(stream, pixels, components())) -+#else -+ if (!dctDecode(stream, pixels)) -+#endif - return Buffer(); - } - Buffer data(height() * width() * sizeof(uint)); diff --git a/graphics/ipe/files/patch-ipelib__ipedct.cpp b/graphics/ipe/files/patch-ipelib__ipedct.cpp deleted file mode 100644 index ac902f61aa91..000000000000 --- a/graphics/ipe/files/patch-ipelib__ipedct.cpp +++ /dev/null @@ -1,1468 +0,0 @@ ---- ipelib/ipedct.cpp.orig -+++ ipelib/ipedct.cpp -@@ -0,0 +1,1465 @@ -+//------------------------------------------------------------------------ -+// Decoding a DCT stream (JPEG image) -+// This code has been taken from Xpdf, -+// Copyright 1996-2002 Glyph & Cog, LLC -+//------------------------------------------------------------------------ -+/* -+ -+ This file is part of the extensible drawing editor Ipe. -+ Copyright (C) 1993-2013 Otfried Cheong -+ -+ Ipe 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 3 of the License, or -+ (at your option) any later version. -+ -+ As a special exception, you have permission to link Ipe with the -+ CGAL library and distribute executables, as long as you follow the -+ requirements of the Gnu General Public License in regard to all of -+ the software in the executable aside from CGAL. -+ -+ Ipe is distributed in the hope that it will be useful, but WITHOUT -+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -+ License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Ipe; if not, you can find it at -+ "http://www.gnu.org/copyleft/gpl.html", or write to the Free -+ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+*/ -+ -+#include "ipebase.h" -+ -+using namespace ipe; -+ -+// -------------------------------------------------------------------- -+ -+// DCT component info -+struct DCTCompInfo { -+ int id; // component ID -+ int hSample, vSample; // horiz/vert sampling resolutions -+ int quantTable; // quantization table number -+ int prevDC; // DC coefficient accumulator -+}; -+ -+struct DCTScanInfo { -+ bool comp[4]; // comp[i] is set if component i is -+ // included in this scan -+ int numComps; // number of components in the scan -+ int dcHuffTable[4]; // DC Huffman table numbers -+ int acHuffTable[4]; // AC Huffman table numbers -+ int firstCoeff, lastCoeff; // first and last DCT coefficient -+ int ah, al; // successive approximation parameters -+}; -+ -+// DCT Huffman decoding table -+struct DCTHuffTable { -+ uchar firstSym[17]; // first symbol for this bit length -+ ushort firstCode[17]; // first code for this bit length -+ ushort numCodes[17]; // number of codes of this bit length -+ uchar sym[256]; // symbols -+}; -+ -+// -------------------------------------------------------------------- -+ -+class DCTStream { -+public: -+ -+ DCTStream(DataSource &source); -+ ~DCTStream(); -+ void reset(); -+ int getChar(); -+ -+private: -+ DataSource &iSource; -+ -+ bool progressive; // set if in progressive mode -+ bool interleaved; // set if in interleaved mode -+ int width, height; // image size -+ int mcuWidth, mcuHeight; // size of min coding unit, in data units -+ int bufWidth, bufHeight; // frameBuf size -+ DCTCompInfo compInfo[4]; // info for each component -+ DCTScanInfo scanInfo; // info for the current scan -+ int numComps; // number of components in image -+ int colorXform; // need YCbCr-to-RGB transform? -+ bool gotAdobeMarker; // set if APP14 Adobe marker was present -+ int restartInterval; // restart interval, in MCUs -+ uchar quantTables[4][64]; // quantization tables -+ int numQuantTables; // number of quantization tables -+ DCTHuffTable dcHuffTables[4]; // DC Huffman tables -+ DCTHuffTable acHuffTables[4]; // AC Huffman tables -+ int numDCHuffTables; // number of DC Huffman tables -+ int numACHuffTables; // number of AC Huffman tables -+ uchar *rowBuf[4][32]; // buffer for one MCU (non-progressive mode) -+ int *frameBuf[4]; // buffer for frame (progressive mode) -+ int comp, x, y, dy; // current position within image/MCU -+ int restartCtr; // MCUs left until restart -+ int restartMarker; // next restart marker -+ int eobRun; // number of EOBs left in the current run -+ int inputBuf; // input buffer for variable length codes -+ int inputBits; // number of valid bits in input buffer -+ -+ void restart(); -+ bool readMCURow(); -+ void readScan(); -+ bool readDataUnit(DCTHuffTable *dcHuffTable, -+ DCTHuffTable *acHuffTable, -+ int *prevDC, int data[64]); -+ bool readProgressiveDataUnit(DCTHuffTable *dcHuffTable, -+ DCTHuffTable *acHuffTable, -+ int *prevDC, int data[64]); -+ void decodeImage(); -+ void transformDataUnit(uchar *quantTable, -+ int dataIn[64], uchar dataOut[64]); -+ int readHuffSym(DCTHuffTable *table); -+ int readAmp(int size); -+ int readBit(); -+ bool readHeader(); -+ bool readBaselineSOF(); -+ bool readProgressiveSOF(); -+ bool readScanInfo(); -+ bool readQuantTables(); -+ bool readHuffmanTables(); -+ bool readRestartInterval(); -+ bool readAdobeMarker(); -+ bool readTrailer(); -+ int readMarker(); -+ int read16(); -+}; -+ -+// -------------------------------------------------------------------- -+ -+// IDCT constants (20.12 fixed point format) -+#define dctCos1 4017 // cos(pi/16) -+#define dctSin1 799 // sin(pi/16) -+#define dctCos3 3406 // cos(3*pi/16) -+#define dctSin3 2276 // sin(3*pi/16) -+#define dctCos6 1567 // cos(6*pi/16) -+#define dctSin6 3784 // sin(6*pi/16) -+#define dctSqrt2 5793 // sqrt(2) -+#define dctSqrt1d2 2896 // sqrt(2) / 2 -+ -+// color conversion parameters (16.16 fixed point format) -+#define dctCrToR 91881 // 1.4020 -+#define dctCbToG -22553 // -0.3441363 -+#define dctCrToG -46802 // -0.71413636 -+#define dctCbToB 116130 // 1.772 -+ -+// clip [-256,511] --> [0,255] -+#define dctClipOffset 256 -+static uchar dctClip[768]; -+static int dctClipInit = 0; -+ -+// zig zag decode map -+static int dctZigZag[64] = { -+ 0, -+ 1, 8, -+ 16, 9, 2, -+ 3, 10, 17, 24, -+ 32, 25, 18, 11, 4, -+ 5, 12, 19, 26, 33, 40, -+ 48, 41, 34, 27, 20, 13, 6, -+ 7, 14, 21, 28, 35, 42, 49, 56, -+ 57, 50, 43, 36, 29, 22, 15, -+ 23, 30, 37, 44, 51, 58, -+ 59, 52, 45, 38, 31, -+ 39, 46, 53, 60, -+ 61, 54, 47, -+ 55, 62, -+ 63 -+}; -+ -+// -------------------------------------------------------------------- -+ -+DCTStream::DCTStream(DataSource &source) -+ : iSource(source) -+{ -+ int i, j; -+ -+ progressive = interleaved = false; -+ width = height = 0; -+ mcuWidth = mcuHeight = 0; -+ numComps = 0; -+ comp = 0; -+ x = y = dy = 0; -+ for (i = 0; i < 4; ++i) { -+ for (j = 0; j < 32; ++j) { -+ rowBuf[i][j] = 0; -+ } -+ frameBuf[i] = 0; -+ } -+ -+ if (!dctClipInit) { -+ for (i = -256; i < 0; ++i) -+ dctClip[dctClipOffset + i] = 0; -+ for (i = 0; i < 256; ++i) -+ dctClip[dctClipOffset + i] = uchar(i); -+ for (i = 256; i < 512; ++i) -+ dctClip[dctClipOffset + i] = 255; -+ dctClipInit = 1; -+ } -+} -+ -+DCTStream::~DCTStream() -+{ -+ int i, j; -+ if (progressive || !interleaved) { -+ for (i = 0; i < numComps; ++i) { -+ delete [] frameBuf[i]; -+ } -+ } else { -+ for (i = 0; i < numComps; ++i) { -+ for (j = 0; j < mcuHeight; ++j) { -+ delete [] rowBuf[i][j]; -+ } -+ } -+ } -+} -+ -+void DCTStream::reset() -+{ -+ int minHSample, minVSample; -+ int i, j; -+ -+ progressive = interleaved = false; -+ width = height = 0; -+ numComps = 0; -+ numQuantTables = 0; -+ numDCHuffTables = 0; -+ numACHuffTables = 0; -+ colorXform = 0; -+ gotAdobeMarker = false; -+ restartInterval = 0; -+ -+ if (!readHeader()) { -+ y = height; -+ return; -+ } -+ -+ // compute MCU size -+ mcuWidth = minHSample = compInfo[0].hSample; -+ mcuHeight = minVSample = compInfo[0].vSample; -+ for (i = 1; i < numComps; ++i) { -+ if (compInfo[i].hSample < minHSample) -+ minHSample = compInfo[i].hSample; -+ if (compInfo[i].vSample < minVSample) -+ minVSample = compInfo[i].vSample; -+ if (compInfo[i].hSample > mcuWidth) -+ mcuWidth = compInfo[i].hSample; -+ if (compInfo[i].vSample > mcuHeight) -+ mcuHeight = compInfo[i].vSample; -+ } -+ for (i = 0; i < numComps; ++i) { -+ compInfo[i].hSample /= minHSample; -+ compInfo[i].vSample /= minVSample; -+ } -+ mcuWidth = (mcuWidth / minHSample) * 8; -+ mcuHeight = (mcuHeight / minVSample) * 8; -+ -+ // figure out color transform -+ if (!gotAdobeMarker && numComps == 3) { -+ if (compInfo[0].id == 1 && compInfo[1].id == 2 && compInfo[2].id == 3) { -+ colorXform = 1; -+ } -+ } -+ -+ if (progressive || !interleaved) { -+ -+ // allocate a buffer for the whole image -+ bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth; -+ bufHeight = ((height + mcuHeight - 1) / mcuHeight) * mcuHeight; -+ for (i = 0; i < numComps; ++i) { -+ frameBuf[i] = new int[bufWidth * bufHeight]; -+ memset(frameBuf[i], 0, bufWidth * bufHeight * sizeof(int)); -+ } -+ -+ // read the image data -+ do { -+ restartMarker = 0xd0; -+ restart(); -+ readScan(); -+ } while (readHeader()); -+ -+ // decode -+ decodeImage(); -+ -+ // initialize counters -+ comp = 0; -+ x = 0; -+ y = 0; -+ -+ } else { -+ -+ // allocate a buffer for one row of MCUs -+ bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth; -+ for (i = 0; i < numComps; ++i) { -+ for (j = 0; j < mcuHeight; ++j) { -+ rowBuf[i][j] = new uchar[bufWidth]; -+ } -+ } -+ -+ // initialize counters -+ comp = 0; -+ x = 0; -+ y = 0; -+ dy = mcuHeight; -+ -+ restartMarker = 0xd0; -+ restart(); -+ } -+} -+ -+int DCTStream::getChar() -+{ -+ int c; -+ -+ if (y >= height) { -+ return EOF; -+ } -+ if (progressive || !interleaved) { -+ c = frameBuf[comp][y * bufWidth + x]; -+ if (++comp == numComps) { -+ comp = 0; -+ if (++x == width) { -+ x = 0; -+ ++y; -+ } -+ } -+ } else { -+ if (dy >= mcuHeight) { -+ if (!readMCURow()) { -+ y = height; -+ return EOF; -+ } -+ comp = 0; -+ x = 0; -+ dy = 0; -+ } -+ c = rowBuf[comp][dy][x]; -+ if (++comp == numComps) { -+ comp = 0; -+ if (++x == width) { -+ x = 0; -+ ++y; -+ ++dy; -+ if (y == height) { -+ readTrailer(); -+ } -+ } -+ } -+ } -+ return c; -+} -+ -+void DCTStream::restart() -+{ -+ int i; -+ -+ inputBits = 0; -+ restartCtr = restartInterval; -+ for (i = 0; i < numComps; ++i) { -+ compInfo[i].prevDC = 0; -+ } -+ eobRun = 0; -+} -+ -+// Read one row of MCUs from a sequential JPEG stream. -+bool DCTStream::readMCURow() -+{ -+ int data1[64]; -+ uchar data2[64]; -+ uchar *p1, *p2; -+ int pY, pCb, pCr, pR, pG, pB; -+ int h, v, horiz, vert, hSub, vSub; -+ int x1, x2, y2, x3, y3, x4, y4, x5, y5, cc, i; -+ int c; -+ -+ for (x1 = 0; x1 < width; x1 += mcuWidth) { -+ -+ // deal with restart marker -+ if (restartInterval > 0 && restartCtr == 0) { -+ c = readMarker(); -+ if (c != restartMarker) { -+ ipeDebug("Bad DCT data: incorrect restart marker"); -+ return false; -+ } -+ if (++restartMarker == 0xd8) -+ restartMarker = 0xd0; -+ restart(); -+ } -+ -+ // read one MCU -+ for (cc = 0; cc < numComps; ++cc) { -+ h = compInfo[cc].hSample; -+ v = compInfo[cc].vSample; -+ horiz = mcuWidth / h; -+ vert = mcuHeight / v; -+ hSub = horiz / 8; -+ vSub = vert / 8; -+ for (y2 = 0; y2 < mcuHeight; y2 += vert) { -+ for (x2 = 0; x2 < mcuWidth; x2 += horiz) { -+ if (!readDataUnit(&dcHuffTables[scanInfo.dcHuffTable[cc]], -+ &acHuffTables[scanInfo.acHuffTable[cc]], -+ &compInfo[cc].prevDC, -+ data1)) { -+ return false; -+ } -+ transformDataUnit(quantTables[compInfo[cc].quantTable], -+ data1, data2); -+ if (hSub == 1 && vSub == 1) { -+ for (y3 = 0, i = 0; y3 < 8; ++y3, i += 8) { -+ p1 = &rowBuf[cc][y2+y3][x1+x2]; -+ p1[0] = data2[i]; -+ p1[1] = data2[i+1]; -+ p1[2] = data2[i+2]; -+ p1[3] = data2[i+3]; -+ p1[4] = data2[i+4]; -+ p1[5] = data2[i+5]; -+ p1[6] = data2[i+6]; -+ p1[7] = data2[i+7]; -+ } -+ } else if (hSub == 2 && vSub == 2) { -+ for (y3 = 0, i = 0; y3 < 16; y3 += 2, i += 8) { -+ p1 = &rowBuf[cc][y2+y3][x1+x2]; -+ p2 = &rowBuf[cc][y2+y3+1][x1+x2]; -+ p1[0] = p1[1] = p2[0] = p2[1] = data2[i]; -+ p1[2] = p1[3] = p2[2] = p2[3] = data2[i+1]; -+ p1[4] = p1[5] = p2[4] = p2[5] = data2[i+2]; -+ p1[6] = p1[7] = p2[6] = p2[7] = data2[i+3]; -+ p1[8] = p1[9] = p2[8] = p2[9] = data2[i+4]; -+ p1[10] = p1[11] = p2[10] = p2[11] = data2[i+5]; -+ p1[12] = p1[13] = p2[12] = p2[13] = data2[i+6]; -+ p1[14] = p1[15] = p2[14] = p2[15] = data2[i+7]; -+ } -+ } else { -+ i = 0; -+ for (y3 = 0, y4 = 0; y3 < 8; ++y3, y4 += vSub) { -+ for (x3 = 0, x4 = 0; x3 < 8; ++x3, x4 += hSub) { -+ for (y5 = 0; y5 < vSub; ++y5) -+ for (x5 = 0; x5 < hSub; ++x5) -+ rowBuf[cc][y2+y4+y5][x1+x2+x4+x5] = data2[i]; -+ ++i; -+ } -+ } -+ } -+ } -+ } -+ } -+ --restartCtr; -+ -+ // color space conversion -+ if (colorXform) { -+ // convert YCbCr to RGB -+ if (numComps == 3) { -+ for (y2 = 0; y2 < mcuHeight; ++y2) { -+ for (x2 = 0; x2 < mcuWidth; ++x2) { -+ pY = rowBuf[0][y2][x1+x2]; -+ pCb = rowBuf[1][y2][x1+x2] - 128; -+ pCr = rowBuf[2][y2][x1+x2] - 128; -+ pR = ((pY << 16) + dctCrToR * pCr + 32768) >> 16; -+ rowBuf[0][y2][x1+x2] = dctClip[dctClipOffset + pR]; -+ pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + 32768) >> 16; -+ rowBuf[1][y2][x1+x2] = dctClip[dctClipOffset + pG]; -+ pB = ((pY << 16) + dctCbToB * pCb + 32768) >> 16; -+ rowBuf[2][y2][x1+x2] = dctClip[dctClipOffset + pB]; -+ } -+ } -+ // convert YCbCrK to CMYK (K is passed through unchanged) -+ } else if (numComps == 4) { -+ for (y2 = 0; y2 < mcuHeight; ++y2) { -+ for (x2 = 0; x2 < mcuWidth; ++x2) { -+ pY = rowBuf[0][y2][x1+x2]; -+ pCb = rowBuf[1][y2][x1+x2] - 128; -+ pCr = rowBuf[2][y2][x1+x2] - 128; -+ pR = ((pY << 16) + dctCrToR * pCr + 32768) >> 16; -+ rowBuf[0][y2][x1+x2] = uchar(255 - dctClip[dctClipOffset + pR]); -+ pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + 32768) >> 16; -+ rowBuf[1][y2][x1+x2] = uchar(255 - dctClip[dctClipOffset + pG]); -+ pB = ((pY << 16) + dctCbToB * pCb + 32768) >> 16; -+ rowBuf[2][y2][x1+x2] = uchar(255 - dctClip[dctClipOffset + pB]); -+ } -+ } -+ } -+ } -+ } -+ return true; -+} -+ -+// Read one scan from a progressive or non-interleaved JPEG stream. -+void DCTStream::readScan() -+{ -+ int data[64]; -+ int x1, y1, dy1, x2, y2, y3, cc, i; -+ int h, v, horiz, vert, vSub; -+ int *p1; -+ int c; -+ -+ if (scanInfo.numComps == 1) { -+ for (cc = 0; cc < numComps; ++cc) { -+ if (scanInfo.comp[cc]) { -+ break; -+ } -+ } -+ dy1 = mcuHeight / compInfo[cc].vSample; -+ } else { -+ dy1 = mcuHeight; -+ } -+ -+ for (y1 = 0; y1 < bufHeight; y1 += dy1) { -+ for (x1 = 0; x1 < bufWidth; x1 += mcuWidth) { -+ -+ // deal with restart marker -+ if (restartInterval > 0 && restartCtr == 0) { -+ c = readMarker(); -+ if (c != restartMarker) { -+ ipeDebug("Bad DCT data: incorrect restart marker"); -+ return; -+ } -+ if (++restartMarker == 0xd8) { -+ restartMarker = 0xd0; -+ } -+ restart(); -+ } -+ -+ // read one MCU -+ for (cc = 0; cc < numComps; ++cc) { -+ if (!scanInfo.comp[cc]) { -+ continue; -+ } -+ -+ h = compInfo[cc].hSample; -+ v = compInfo[cc].vSample; -+ horiz = mcuWidth / h; -+ vert = mcuHeight / v; -+ // hSub = horiz / 8; -+ vSub = vert / 8; -+ for (y2 = 0; y2 < dy1; y2 += vert) { -+ for (x2 = 0; x2 < mcuWidth; x2 += horiz) { -+ -+ // pull out the current values -+ p1 = &frameBuf[cc][(y1+y2) * bufWidth + (x1+x2)]; -+ for (y3 = 0, i = 0; y3 < 8; ++y3, i += 8) { -+ data[i] = p1[0]; -+ data[i+1] = p1[1]; -+ data[i+2] = p1[2]; -+ data[i+3] = p1[3]; -+ data[i+4] = p1[4]; -+ data[i+5] = p1[5]; -+ data[i+6] = p1[6]; -+ data[i+7] = p1[7]; -+ p1 += bufWidth * vSub; -+ } -+ -+ // read one data unit -+ if (progressive) { -+ if (!readProgressiveDataUnit( -+ &dcHuffTables[scanInfo.dcHuffTable[cc]], -+ &acHuffTables[scanInfo.acHuffTable[cc]], -+ &compInfo[cc].prevDC, -+ data)) { -+ return; -+ } -+ } else { -+ if (!readDataUnit(&dcHuffTables[scanInfo.dcHuffTable[cc]], -+ &acHuffTables[scanInfo.acHuffTable[cc]], -+ &compInfo[cc].prevDC, -+ data)) { -+ return; -+ } -+ } -+ -+ // add the data unit into frameBuf -+ p1 = &frameBuf[cc][(y1+y2) * bufWidth + (x1+x2)]; -+ for (y3 = 0, i = 0; y3 < 8; ++y3, i += 8) { -+ p1[0] = data[i]; -+ p1[1] = data[i+1]; -+ p1[2] = data[i+2]; -+ p1[3] = data[i+3]; -+ p1[4] = data[i+4]; -+ p1[5] = data[i+5]; -+ p1[6] = data[i+6]; -+ p1[7] = data[i+7]; -+ p1 += bufWidth * vSub; -+ } -+ } -+ } -+ } -+ --restartCtr; -+ } -+ } -+} -+ -+// Read one data unit from a sequential JPEG stream. -+bool DCTStream::readDataUnit(DCTHuffTable *dcHuffTable, -+ DCTHuffTable *acHuffTable, -+ int *prevDC, int data[64]) -+{ -+ int run, size, amp; -+ int c; -+ int i, j; -+ -+ if ((size = readHuffSym(dcHuffTable)) == 9999) { -+ return false; -+ } -+ if (size > 0) { -+ if ((amp = readAmp(size)) == 9999) { -+ return false; -+ } -+ } else { -+ amp = 0; -+ } -+ data[0] = *prevDC += amp; -+ for (i = 1; i < 64; ++i) { -+ data[i] = 0; -+ } -+ i = 1; -+ while (i < 64) { -+ run = 0; -+ while ((c = readHuffSym(acHuffTable)) == 0xf0 && run < 0x30) { -+ run += 0x10; -+ } -+ if (c == 9999) { -+ return false; -+ } -+ if (c == 0x00) { -+ break; -+ } else { -+ run += (c >> 4) & 0x0f; -+ size = c & 0x0f; -+ amp = readAmp(size); -+ if (amp == 9999) { -+ return false; -+ } -+ i += run; -+ j = dctZigZag[i++]; -+ data[j] = amp; -+ } -+ } -+ return true; -+} -+ -+// Read one data unit from a sequential JPEG stream. -+bool DCTStream::readProgressiveDataUnit(DCTHuffTable *dcHuffTable, -+ DCTHuffTable *acHuffTable, -+ int *prevDC, int data[64]) -+{ -+ int run, size, amp, bit, c; -+ int i, j, k; -+ -+ // get the DC coefficient -+ i = scanInfo.firstCoeff; -+ if (i == 0) { -+ if (scanInfo.ah == 0) { -+ if ((size = readHuffSym(dcHuffTable)) == 9999) { -+ return false; -+ } -+ if (size > 0) { -+ if ((amp = readAmp(size)) == 9999) { -+ return false; -+ } -+ } else { -+ amp = 0; -+ } -+ data[0] += (*prevDC += amp) << scanInfo.al; -+ } else { -+ if ((bit = readBit()) == 9999) { -+ return false; -+ } -+ data[0] += bit << scanInfo.al; -+ } -+ ++i; -+ } -+ if (scanInfo.lastCoeff == 0) { -+ return true; -+ } -+ -+ // check for an EOB run -+ if (eobRun > 0) { -+ while (i <= scanInfo.lastCoeff) { -+ j = dctZigZag[i++]; -+ if (data[j] != 0) { -+ if ((bit = readBit()) == EOF) { -+ return false; -+ } -+ if (bit) { -+ data[j] += 1 << scanInfo.al; -+ } -+ } -+ } -+ --eobRun; -+ return true; -+ } -+ -+ // read the AC coefficients -+ while (i <= scanInfo.lastCoeff) { -+ if ((c = readHuffSym(acHuffTable)) == 9999) { -+ return false; -+ } -+ -+ // ZRL -+ if (c == 0xf0) { -+ k = 0; -+ while (k < 16) { -+ j = dctZigZag[i++]; -+ if (data[j] == 0) { -+ ++k; -+ } else { -+ if ((bit = readBit()) == EOF) { -+ return false; -+ } -+ if (bit) { -+ data[j] += 1 << scanInfo.al; -+ } -+ } -+ } -+ -+ // EOB run -+ } else if ((c & 0x0f) == 0x00) { -+ j = c >> 4; -+ eobRun = 0; -+ for (k = 0; k < j; ++k) { -+ if ((bit = readBit()) == EOF) { -+ return 9999; -+ } -+ eobRun = (eobRun << 1) | bit; -+ } -+ eobRun += 1 << j; -+ while (i <= scanInfo.lastCoeff) { -+ j = dctZigZag[i++]; -+ if (data[j] != 0) { -+ if ((bit = readBit()) == EOF) { -+ return false; -+ } -+ if (bit) { -+ data[j] += 1 << scanInfo.al; -+ } -+ } -+ } -+ --eobRun; -+ break; -+ -+ // zero run and one AC coefficient -+ } else { -+ run = (c >> 4) & 0x0f; -+ size = c & 0x0f; -+ if ((amp = readAmp(size)) == 9999) { -+ return false; -+ } -+ k = 0; -+ do { -+ j = dctZigZag[i++]; -+ while (data[j] != 0) { -+ if ((bit = readBit()) == EOF) { -+ return false; -+ } -+ if (bit) { -+ data[j] += 1 << scanInfo.al; -+ } -+ j = dctZigZag[i++]; -+ } -+ ++k; -+ } while (k <= run); -+ data[j] = amp << scanInfo.al; -+ } -+ } -+ -+ return true; -+} -+ -+// Decode a progressive JPEG image. -+void DCTStream::decodeImage() -+{ -+ int dataIn[64]; -+ uchar dataOut[64]; -+ uchar *quantTable; -+ int pY, pCb, pCr, pR, pG, pB; -+ int x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, cc, i; -+ int h, v, horiz, vert, hSub, vSub; -+ int *p0, *p1, *p2; -+ -+ for (y1 = 0; y1 < bufHeight; y1 += mcuHeight) { -+ for (x1 = 0; x1 < bufWidth; x1 += mcuWidth) { -+ for (cc = 0; cc < numComps; ++cc) { -+ quantTable = quantTables[compInfo[cc].quantTable]; -+ h = compInfo[cc].hSample; -+ v = compInfo[cc].vSample; -+ horiz = mcuWidth / h; -+ vert = mcuHeight / v; -+ hSub = horiz / 8; -+ vSub = vert / 8; -+ for (y2 = 0; y2 < mcuHeight; y2 += vert) { -+ for (x2 = 0; x2 < mcuWidth; x2 += horiz) { -+ -+ // pull out the coded data unit -+ p1 = &frameBuf[cc][(y1+y2) * bufWidth + (x1+x2)]; -+ for (y3 = 0, i = 0; y3 < 8; ++y3, i += 8) { -+ dataIn[i] = p1[0]; -+ dataIn[i+1] = p1[1]; -+ dataIn[i+2] = p1[2]; -+ dataIn[i+3] = p1[3]; -+ dataIn[i+4] = p1[4]; -+ dataIn[i+5] = p1[5]; -+ dataIn[i+6] = p1[6]; -+ dataIn[i+7] = p1[7]; -+ p1 += bufWidth * vSub; -+ } -+ -+ // transform -+ transformDataUnit(quantTable, dataIn, dataOut); -+ -+ // store back into frameBuf, doing replication for -+ // subsampled components -+ p1 = &frameBuf[cc][(y1+y2) * bufWidth + (x1+x2)]; -+ if (hSub == 1 && vSub == 1) { -+ for (y3 = 0, i = 0; y3 < 8; ++y3, i += 8) { -+ p1[0] = dataOut[i] & 0xff; -+ p1[1] = dataOut[i+1] & 0xff; -+ p1[2] = dataOut[i+2] & 0xff; -+ p1[3] = dataOut[i+3] & 0xff; -+ p1[4] = dataOut[i+4] & 0xff; -+ p1[5] = dataOut[i+5] & 0xff; -+ p1[6] = dataOut[i+6] & 0xff; -+ p1[7] = dataOut[i+7] & 0xff; -+ p1 += bufWidth; -+ } -+ } else if (hSub == 2 && vSub == 2) { -+ p2 = p1 + bufWidth; -+ for (y3 = 0, i = 0; y3 < 16; y3 += 2, i += 8) { -+ p1[0] = p1[1] = p2[0] = p2[1] = dataOut[i] & 0xff; -+ p1[2] = p1[3] = p2[2] = p2[3] = dataOut[i+1] & 0xff; -+ p1[4] = p1[5] = p2[4] = p2[5] = dataOut[i+2] & 0xff; -+ p1[6] = p1[7] = p2[6] = p2[7] = dataOut[i+3] & 0xff; -+ p1[8] = p1[9] = p2[8] = p2[9] = dataOut[i+4] & 0xff; -+ p1[10] = p1[11] = p2[10] = p2[11] = dataOut[i+5] & 0xff; -+ p1[12] = p1[13] = p2[12] = p2[13] = dataOut[i+6] & 0xff; -+ p1[14] = p1[15] = p2[14] = p2[15] = dataOut[i+7] & 0xff; -+ p1 += bufWidth * 2; -+ p2 += bufWidth * 2; -+ } -+ } else { -+ i = 0; -+ for (y3 = 0, y4 = 0; y3 < 8; ++y3, y4 += vSub) { -+ for (x3 = 0, x4 = 0; x3 < 8; ++x3, x4 += hSub) { -+ p2 = p1 + x4; -+ for (y5 = 0; y5 < vSub; ++y5) { -+ for (x5 = 0; x5 < hSub; ++x5) { -+ p2[x5] = dataOut[i] & 0xff; -+ } -+ p2 += bufWidth; -+ } -+ ++i; -+ } -+ p1 += bufWidth * vSub; -+ } -+ } -+ } -+ } -+ } -+ -+ // color space conversion -+ if (colorXform) { -+ // convert YCbCr to RGB -+ if (numComps == 3) { -+ for (y2 = 0; y2 < mcuHeight; ++y2) { -+ p0 = &frameBuf[0][(y1+y2) * bufWidth + x1]; -+ p1 = &frameBuf[1][(y1+y2) * bufWidth + x1]; -+ p2 = &frameBuf[2][(y1+y2) * bufWidth + x1]; -+ for (x2 = 0; x2 < mcuWidth; ++x2) { -+ pY = *p0; -+ pCb = *p1 - 128; -+ pCr = *p2 - 128; -+ pR = ((pY << 16) + dctCrToR * pCr + 32768) >> 16; -+ *p0++ = dctClip[dctClipOffset + pR]; -+ pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + -+ 32768) >> 16; -+ *p1++ = dctClip[dctClipOffset + pG]; -+ pB = ((pY << 16) + dctCbToB * pCb + 32768) >> 16; -+ *p2++ = dctClip[dctClipOffset + pB]; -+ } -+ } -+ // convert YCbCrK to CMYK (K is passed through unchanged) -+ } else if (numComps == 4) { -+ for (y2 = 0; y2 < mcuHeight; ++y2) { -+ p0 = &frameBuf[0][(y1+y2) * bufWidth + x1]; -+ p1 = &frameBuf[1][(y1+y2) * bufWidth + x1]; -+ p2 = &frameBuf[2][(y1+y2) * bufWidth + x1]; -+ for (x2 = 0; x2 < mcuWidth; ++x2) { -+ pY = *p0; -+ pCb = *p1 - 128; -+ pCr = *p2 - 128; -+ pR = ((pY << 16) + dctCrToR * pCr + 32768) >> 16; -+ *p0++ = 255 - dctClip[dctClipOffset + pR]; -+ pG = ((pY << 16) + dctCbToG * pCb + dctCrToG * pCr + -+ 32768) >> 16; -+ *p1++ = 255 - dctClip[dctClipOffset + pG]; -+ pB = ((pY << 16) + dctCbToB * pCb + 32768) >> 16; -+ *p2++ = 255 - dctClip[dctClipOffset + pB]; -+ } -+ } -+ } -+ } -+ } -+ } -+} -+ -+// Transform one data unit -- this performs the dequantization and -+// IDCT steps. This IDCT algorithm is taken from: -+// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz, -+// "Practical Fast 1-D DCT Algorithms with 11 Multiplications", -+// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989, -+// 988-991. -+// The stage numbers mentioned in the comments refer to Figure 1 in this -+// paper. -+void DCTStream::transformDataUnit(uchar *quantTable, -+ int dataIn[64], uchar dataOut[64]) -+{ -+ int v0, v1, v2, v3, v4, v5, v6, v7, t; -+ int *p; -+ int i; -+ -+ // dequant -+ for (i = 0; i < 64; ++i) { -+ dataIn[i] *= quantTable[i]; -+ } -+ -+ // inverse DCT on rows -+ for (i = 0; i < 64; i += 8) { -+ p = dataIn + i; -+ -+ // check for all-zero AC coefficients -+ if (p[1] == 0 && p[2] == 0 && p[3] == 0 && -+ p[4] == 0 && p[5] == 0 && p[6] == 0 && p[7] == 0) { -+ t = (dctSqrt2 * p[0] + 512) >> 10; -+ p[0] = t; -+ p[1] = t; -+ p[2] = t; -+ p[3] = t; -+ p[4] = t; -+ p[5] = t; -+ p[6] = t; -+ p[7] = t; -+ continue; -+ } -+ -+ // stage 4 -+ v0 = (dctSqrt2 * p[0] + 128) >> 8; -+ v1 = (dctSqrt2 * p[4] + 128) >> 8; -+ v2 = p[2]; -+ v3 = p[6]; -+ v4 = (dctSqrt1d2 * (p[1] - p[7]) + 128) >> 8; -+ v7 = (dctSqrt1d2 * (p[1] + p[7]) + 128) >> 8; -+ v5 = p[3] << 4; -+ v6 = p[5] << 4; -+ -+ // stage 3 -+ t = (v0 - v1+ 1) >> 1; -+ v0 = (v0 + v1 + 1) >> 1; -+ v1 = t; -+ t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8; -+ v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8; -+ v3 = t; -+ t = (v4 - v6 + 1) >> 1; -+ v4 = (v4 + v6 + 1) >> 1; -+ v6 = t; -+ t = (v7 + v5 + 1) >> 1; -+ v5 = (v7 - v5 + 1) >> 1; -+ v7 = t; -+ -+ // stage 2 -+ t = (v0 - v3 + 1) >> 1; -+ v0 = (v0 + v3 + 1) >> 1; -+ v3 = t; -+ t = (v1 - v2 + 1) >> 1; -+ v1 = (v1 + v2 + 1) >> 1; -+ v2 = t; -+ t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; -+ v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; -+ v7 = t; -+ t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; -+ v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; -+ v6 = t; -+ -+ // stage 1 -+ p[0] = v0 + v7; -+ p[7] = v0 - v7; -+ p[1] = v1 + v6; -+ p[6] = v1 - v6; -+ p[2] = v2 + v5; -+ p[5] = v2 - v5; -+ p[3] = v3 + v4; -+ p[4] = v3 - v4; -+ } -+ -+ // inverse DCT on columns -+ for (i = 0; i < 8; ++i) { -+ p = dataIn + i; -+ -+ // check for all-zero AC coefficients -+ if (p[1*8] == 0 && p[2*8] == 0 && p[3*8] == 0 && -+ p[4*8] == 0 && p[5*8] == 0 && p[6*8] == 0 && p[7*8] == 0) { -+ t = (dctSqrt2 * dataIn[i+0] + 8192) >> 14; -+ p[0*8] = t; -+ p[1*8] = t; -+ p[2*8] = t; -+ p[3*8] = t; -+ p[4*8] = t; -+ p[5*8] = t; -+ p[6*8] = t; -+ p[7*8] = t; -+ continue; -+ } -+ -+ // stage 4 -+ v0 = (dctSqrt2 * p[0*8] + 2048) >> 12; -+ v1 = (dctSqrt2 * p[4*8] + 2048) >> 12; -+ v2 = p[2*8]; -+ v3 = p[6*8]; -+ v4 = (dctSqrt1d2 * (p[1*8] - p[7*8]) + 2048) >> 12; -+ v7 = (dctSqrt1d2 * (p[1*8] + p[7*8]) + 2048) >> 12; -+ v5 = p[3*8]; -+ v6 = p[5*8]; -+ -+ // stage 3 -+ t = (v0 - v1 + 1) >> 1; -+ v0 = (v0 + v1 + 1) >> 1; -+ v1 = t; -+ t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12; -+ v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12; -+ v3 = t; -+ t = (v4 - v6 + 1) >> 1; -+ v4 = (v4 + v6 + 1) >> 1; -+ v6 = t; -+ t = (v7 + v5 + 1) >> 1; -+ v5 = (v7 - v5 + 1) >> 1; -+ v7 = t; -+ -+ // stage 2 -+ t = (v0 - v3 + 1) >> 1; -+ v0 = (v0 + v3 + 1) >> 1; -+ v3 = t; -+ t = (v1 - v2 + 1) >> 1; -+ v1 = (v1 + v2 + 1) >> 1; -+ v2 = t; -+ t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; -+ v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; -+ v7 = t; -+ t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; -+ v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; -+ v6 = t; -+ -+ // stage 1 -+ p[0*8] = v0 + v7; -+ p[7*8] = v0 - v7; -+ p[1*8] = v1 + v6; -+ p[6*8] = v1 - v6; -+ p[2*8] = v2 + v5; -+ p[5*8] = v2 - v5; -+ p[3*8] = v3 + v4; -+ p[4*8] = v3 - v4; -+ } -+ -+ // convert to 8-bit integers -+ for (i = 0; i < 64; ++i) { -+ dataOut[i] = dctClip[dctClipOffset + 128 + ((dataIn[i] + 8) >> 4)]; -+ } -+} -+ -+int DCTStream::readHuffSym(DCTHuffTable *table) -+{ -+ ushort code; -+ int bit; -+ int codeBits; -+ -+ code = 0; -+ codeBits = 0; -+ do { -+ // add a bit to the code -+ if ((bit = readBit()) == EOF) -+ return 9999; -+ code = ushort((code << 1) + bit); -+ ++codeBits; -+ -+ // look up code -+ if (code - table->firstCode[codeBits] < table->numCodes[codeBits]) { -+ code -= table->firstCode[codeBits]; -+ return table->sym[table->firstSym[codeBits] + code]; -+ } -+ } while (codeBits < 16); -+ -+ ipeDebug("Bad Huffman code in DCT stream"); -+ return 9999; -+} -+ -+int DCTStream::readAmp(int size) -+{ -+ int amp, bit; -+ int bits; -+ -+ amp = 0; -+ for (bits = 0; bits < size; ++bits) { -+ if ((bit = readBit()) == EOF) -+ return 9999; -+ amp = (amp << 1) + bit; -+ } -+ if (amp < (1 << (size - 1))) -+ amp -= (1 << size) - 1; -+ return amp; -+} -+ -+int DCTStream::readBit() -+{ -+ int bit; -+ int c, c2; -+ -+ if (inputBits == 0) { -+ if ((c = iSource.getChar()) == EOF) -+ return EOF; -+ if (c == 0xff) { -+ do { -+ c2 = iSource.getChar(); -+ } while (c2 == 0xff); -+ if (c2 != 0x00) { -+ ipeDebug("Bad DCT data: missing 00 after ff"); -+ return EOF; -+ } -+ } -+ inputBuf = c; -+ inputBits = 8; -+ } -+ bit = (inputBuf >> (inputBits - 1)) & 1; -+ --inputBits; -+ return bit; -+} -+ -+bool DCTStream::readHeader() -+{ -+ bool doScan; -+ int n; -+ int c; -+ int i; -+ -+ // read headers -+ doScan = false; -+ while (!doScan) { -+ c = readMarker(); -+ switch (c) { -+ case 0xc0: // SOF0 -+ if (!readBaselineSOF()) { -+ return false; -+ } -+ break; -+ case 0xc2: // SOF2 -+ if (!readProgressiveSOF()) { -+ return false; -+ } -+ break; -+ case 0xc4: // DHT -+ if (!readHuffmanTables()) { -+ return false; -+ } -+ break; -+ case 0xd8: // SOI -+ break; -+ case 0xd9: // EOI -+ return false; -+ case 0xda: // SOS -+ if (!readScanInfo()) { -+ return false; -+ } -+ doScan = true; -+ break; -+ case 0xdb: // DQT -+ if (!readQuantTables()) { -+ return false; -+ } -+ break; -+ case 0xdd: // DRI -+ if (!readRestartInterval()) { -+ return false; -+ } -+ break; -+ case 0xee: // APP14 -+ if (!readAdobeMarker()) { -+ return false; -+ } -+ break; -+ case EOF: -+ ipeDebug("Bad DCT header"); -+ return false; -+ default: -+ // skip APPn / COM / etc. -+ if (c >= 0xe0) { -+ n = read16() - 2; -+ for (i = 0; i < n; ++i) { -+ iSource.getChar(); -+ } -+ } else { -+ ipeDebug("Unknown DCT marker <%02x>", c); -+ return false; -+ } -+ break; -+ } -+ } -+ -+ return true; -+} -+ -+bool DCTStream::readBaselineSOF() -+{ -+ (void) read16(); // length -+ int prec = iSource.getChar(); -+ height = read16(); -+ width = read16(); -+ numComps = iSource.getChar(); -+ if (prec != 8) { -+ ipeDebug("Bad DCT precision %d", prec); -+ return false; -+ } -+ for (int i = 0; i < numComps; ++i) { -+ compInfo[i].id = iSource.getChar(); -+ int c = iSource.getChar(); -+ compInfo[i].hSample = (c >> 4) & 0x0f; -+ compInfo[i].vSample = c & 0x0f; -+ compInfo[i].quantTable = iSource.getChar(); -+ } -+ progressive = false; -+ return true; -+} -+ -+bool DCTStream::readProgressiveSOF() -+{ -+ (void) read16(); // length -+ int prec = iSource.getChar(); -+ height = read16(); -+ width = read16(); -+ numComps = iSource.getChar(); -+ if (prec != 8) { -+ ipeDebug("Bad DCT precision %d", prec); -+ return false; -+ } -+ for (int i = 0; i < numComps; ++i) { -+ compInfo[i].id = iSource.getChar(); -+ int c = iSource.getChar(); -+ compInfo[i].hSample = (c >> 4) & 0x0f; -+ compInfo[i].vSample = c & 0x0f; -+ compInfo[i].quantTable = iSource.getChar(); -+ } -+ progressive = true; -+ return true; -+} -+ -+bool DCTStream::readScanInfo() -+{ -+ int length; -+ int id, c; -+ int i, j; -+ -+ length = read16() - 2; -+ scanInfo.numComps = iSource.getChar(); -+ --length; -+ if (length != 2 * scanInfo.numComps + 3) { -+ ipeDebug("Bad DCT scan info block"); -+ return false; -+ } -+ interleaved = scanInfo.numComps == numComps; -+ for (j = 0; j < numComps; ++j) { -+ scanInfo.comp[j] = false; -+ } -+ for (i = 0; i < scanInfo.numComps; ++i) { -+ id = iSource.getChar(); -+ for (j = 0; j < numComps; ++j) { -+ if (id == compInfo[j].id) { -+ break; -+ } -+ } -+ if (j == numComps) { -+ ipeDebug("Bad DCT component ID in scan info block"); -+ return false; -+ } -+ scanInfo.comp[j] = true; -+ c = iSource.getChar(); -+ scanInfo.dcHuffTable[j] = (c >> 4) & 0x0f; -+ scanInfo.acHuffTable[j] = c & 0x0f; -+ } -+ scanInfo.firstCoeff = iSource.getChar(); -+ scanInfo.lastCoeff = iSource.getChar(); -+ c = iSource.getChar(); -+ scanInfo.ah = (c >> 4) & 0x0f; -+ scanInfo.al = c & 0x0f; -+ return true; -+} -+ -+bool DCTStream::readQuantTables() -+{ -+ int length; -+ int i; -+ int index; -+ -+ length = read16() - 2; -+ while (length > 0) { -+ index = iSource.getChar(); -+ if ((index & 0xf0) || index >= 4) { -+ ipeDebug("Bad DCT quantization table"); -+ return false; -+ } -+ if (index == numQuantTables) -+ numQuantTables = index + 1; -+ for (i = 0; i < 64; ++i) -+ quantTables[index][dctZigZag[i]] = uchar(iSource.getChar()); -+ length -= 65; -+ } -+ return true; -+} -+ -+bool DCTStream::readHuffmanTables() -+{ -+ DCTHuffTable *tbl; -+ int length; -+ int index; -+ ushort code; -+ uchar sym; -+ int i; -+ int c; -+ -+ length = read16() - 2; -+ while (length > 0) { -+ index = iSource.getChar(); -+ --length; -+ if ((index & 0x0f) >= 4) { -+ ipeDebug("Bad DCT Huffman table"); -+ return false; -+ } -+ if (index & 0x10) { -+ index &= 0x0f; -+ if (index >= numACHuffTables) -+ numACHuffTables = index+1; -+ tbl = &acHuffTables[index]; -+ } else { -+ if (index >= numDCHuffTables) -+ numDCHuffTables = index+1; -+ tbl = &dcHuffTables[index]; -+ } -+ sym = 0; -+ code = 0; -+ for (i = 1; i <= 16; ++i) { -+ c = iSource.getChar(); -+ tbl->firstSym[i] = sym; -+ tbl->firstCode[i] = code; -+ tbl->numCodes[i] = ushort(c); -+ sym += uchar(c); -+ code = ushort((code + c) << 1); -+ } -+ length -= 16; -+ for (i = 0; i < sym; ++i) -+ tbl->sym[i] = uchar(iSource.getChar()); -+ length -= sym; -+ } -+ return true; -+} -+ -+bool DCTStream::readRestartInterval() -+{ -+ int length; -+ -+ length = read16(); -+ if (length != 4) { -+ ipeDebug("Bad DCT restart interval"); -+ return false; -+ } -+ restartInterval = read16(); -+ return true; -+} -+ -+bool DCTStream::readAdobeMarker() -+{ -+ int length, i; -+ char buf[12]; -+ int c; -+ -+ length = read16(); -+ if (length < 14) { -+ goto err; -+ } -+ for (i = 0; i < 12; ++i) { -+ if ((c = iSource.getChar()) == EOF) { -+ goto err; -+ } -+ buf[i] = char(c); -+ } -+ if (::strncmp(buf, "Adobe", 5)) { -+ goto err; -+ } -+ colorXform = buf[11]; -+ gotAdobeMarker = true; -+ for (i = 14; i < length; ++i) { -+ if (iSource.getChar() == EOF) { -+ goto err; -+ } -+ } -+ return true; -+ -+ err: -+ ipeDebug("Bad DCT Adobe APP14 marker"); -+ return false; -+} -+ -+bool DCTStream::readTrailer() -+{ -+ int c; -+ -+ c = readMarker(); -+ if (c != 0xd9) { // EOI -+ ipeDebug("Bad DCT trailer"); -+ return false; -+ } -+ return true; -+} -+ -+int DCTStream::readMarker() -+{ -+ int c; -+ -+ do { -+ do { -+ c = iSource.getChar(); -+ } while (c != 0xff); -+ do { -+ c = iSource.getChar(); -+ } while (c == 0xff); -+ } while (c == 0x00); -+ return c; -+} -+ -+int DCTStream::read16() -+{ -+ int c1, c2; -+ -+ if ((c1 = iSource.getChar()) == EOF) -+ return EOF; -+ if ((c2 = iSource.getChar()) == EOF) -+ return EOF; -+ return (c1 << 8) + c2; -+} -+ -+// -------------------------------------------------------------------- -+ -+bool dctDecode(Buffer dctData, Buffer pixelData) -+{ -+ // ipeDebug("dctDecode %d, %d", dctData.size(), pixelData.size()); -+ BufferSource source(dctData); -+ DCTStream dct(source); -+ dct.reset(); -+ char *p = pixelData.data(); -+ int n = pixelData.size(); -+ while (n--) { -+ int c = dct.getChar(); -+ if (c == EOF) -+ return false; -+ *p++ = char(c); -+ } -+ return true; -+} -+ -+// -------------------------------------------------------------------- diff --git a/graphics/ipe/files/patch-ipelib__ipegeo.cpp b/graphics/ipe/files/patch-ipelib__ipegeo.cpp deleted file mode 100644 index f56473d41aaf..000000000000 --- a/graphics/ipe/files/patch-ipelib__ipegeo.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- ipelib/ipegeo.cpp.orig -+++ ipelib/ipegeo.cpp -@@ -38,6 +38,8 @@ - */ - - #include "ipegeo.h" -+#include -+#include - - using namespace ipe; - diff --git a/graphics/ipe/files/patch-ipelib__ipelatex.cpp b/graphics/ipe/files/patch-ipelib__ipelatex.cpp deleted file mode 100644 index e8310bf8fd77..000000000000 --- a/graphics/ipe/files/patch-ipelib__ipelatex.cpp +++ /dev/null @@ -1,11 +0,0 @@ ---- ipelib/ipelatex.cpp.orig -+++ ipelib/ipelatex.cpp -@@ -35,6 +35,8 @@ - #include "ipefontpool.h" - #include "ipelatex.h" - -+#include -+ - using namespace ipe; - - /*! \class ipe::Latex diff --git a/graphics/ipe/files/patch-ipelib__ipeshape.cpp b/graphics/ipe/files/patch-ipelib__ipeshape.cpp deleted file mode 100644 index 18b8978d3d88..000000000000 --- a/graphics/ipe/files/patch-ipelib__ipeshape.cpp +++ /dev/null @@ -1,10 +0,0 @@ ---- ipelib/ipeshape.cpp.orig -+++ ipelib/ipeshape.cpp -@@ -30,6 +30,7 @@ - - #include "ipeshape.h" - #include "ipepainter.h" -+#include - - using namespace ipe; - diff --git a/graphics/ipe/files/patch-ipelib_ipeplatform.cpp b/graphics/ipe/files/patch-ipelib_ipeplatform.cpp deleted file mode 100644 index 6b8cf457ec85..000000000000 --- a/graphics/ipe/files/patch-ipelib_ipeplatform.cpp +++ /dev/null @@ -1,88 +0,0 @@ ---- ipelib/ipeplatform.cpp.orig 2015-02-23 13:02:13 UTC -+++ ipelib/ipeplatform.cpp -@@ -37,7 +37,6 @@ - #include - #else - #include --#include - #endif - #include - #include -@@ -46,6 +45,17 @@ - #include - #include - -+#ifdef __FreeBSD__ -+#include -+# if __FreeBSD_version < 900045 -+# define NO_XLOCALE -+# endif -+#endif -+ -+#ifndef NO_XLOCALE -+#include -+#endif -+ - using namespace ipe; - - // -------------------------------------------------------------------- -@@ -70,12 +80,14 @@ int Platform::libVersion() - static bool initialized = false; - static bool showDebug = false; - static Platform::DebugHandler debugHandler = 0; -+#ifndef NO_XLOCALE - #ifdef WIN32 - // not yet available in MINGW RT library - // _locale_t ipeLocale; - #else - locale_t ipeLocale; - #endif -+#endif - - #ifdef WIN32 - // Counterpart to Platform::wideToUtf8 -@@ -100,11 +112,13 @@ static void debugHandlerImpl(const char - - static void cleanup_repository() - { -+#ifndef NO_XLOCALE - #ifdef WIN32 - // _free_locale(ipeLocale); - #else - freelocale(ipeLocale); - #endif -+#endif - Repository::cleanup(); - } - -@@ -127,11 +141,13 @@ void Platform::initLib(int version) - if (getenv("IPEDEBUG") != 0) - showDebug = true; - debugHandler = debugHandlerImpl; -+#ifndef NO_XLOCALE - #ifdef WIN32 - // ipeLocale = ::_create_locale(LC_NUMERIC, "C"); - #else - ipeLocale = newlocale(LC_NUMERIC_MASK, "C", NULL); - #endif -+#endif - atexit(cleanup_repository); - #ifndef WIN32 - if (version == IPELIB_VERSION) -@@ -462,12 +478,16 @@ String Platform::wideToUtf8(const wchar_ - - double Platform::toDouble(String s) - { -+#ifdef NO_XLOCALE -+ return strtod(s.z(), 0); -+#else - #ifdef WIN32 - return strtod(s.z(), 0); - // return _strtod_l(s.z(), 0, ipeLocale); - #else - return strtod_l(s.z(), 0, ipeLocale); - #endif -+#endif - } - - void ipeAssertionFailed(const char *file, int line, const char *assertion) diff --git a/graphics/ipe/pkg-descr b/graphics/ipe/pkg-descr index 881892e30d3b..32c6f37e4d69 100644 --- a/graphics/ipe/pkg-descr +++ b/graphics/ipe/pkg-descr @@ -3,4 +3,4 @@ Postscript format. It supports making small figures for inclusion into LaTeX-documents as well as making multi-page PDF presentations that can be shown on-line with Acrobat Reader. -WWW: http://ipe7.sourceforge.net/ +WWW: http://ipe.otfried.org/ diff --git a/graphics/ipe/pkg-plist b/graphics/ipe/pkg-plist index 85604328833e..0c18c6065fe2 100644 --- a/graphics/ipe/pkg-plist +++ b/graphics/ipe/pkg-plist @@ -4,17 +4,16 @@ bin/ipeextract bin/iperender bin/ipescript bin/ipetoipe -bin/ipeview include/ipeattributes.h include/ipebase.h include/ipebitmap.h include/ipecanvas.h +include/ipecanvas_cocoa.h include/ipecanvas_gtk.h include/ipecanvas_qt.h include/ipecanvas_win.h include/ipedoc.h include/ipefactory.h -include/ipefontpool.h include/ipegeo.h include/ipegroup.h include/ipeimage.h @@ -23,6 +22,7 @@ include/ipelatex.h include/ipelet.h include/ipelib.h include/ipeobject.h +include/ipeosx.h include/ipepage.h include/ipepainter.h include/ipepath.h @@ -30,6 +30,8 @@ include/ipepdfparser.h include/ipepdfwriter.h include/ipepswriter.h include/ipereference.h +include/iperesources.h +include/ipeselector_cocoa.h include/ipeselector_qt.h include/ipeshape.h include/ipesnap.h @@ -61,16 +63,32 @@ man/man1/ipeextract.1.gz man/man1/iperender.1.gz man/man1/ipescript.1.gz man/man1/ipetoipe.1.gz -%%DATADIR%%/%%VERSION%%/fontmap.xml %%DATADIR%%/%%VERSION%%/icons/copy.png +%%DATADIR%%/%%VERSION%%/icons/copy@2x.png +%%DATADIR%%/%%VERSION%%/icons/copy_32x32.png +%%DATADIR%%/%%VERSION%%/icons/copy_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/cut.png +%%DATADIR%%/%%VERSION%%/icons/cut@2x.png +%%DATADIR%%/%%VERSION%%/icons/cut_32x32.png +%%DATADIR%%/%%VERSION%%/icons/cut_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/delete.png +%%DATADIR%%/%%VERSION%%/icons/delete@2x.png +%%DATADIR%%/%%VERSION%%/icons/delete_32x32.png +%%DATADIR%%/%%VERSION%%/icons/delete_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/fit_objects.png +%%DATADIR%%/%%VERSION%%/icons/fit_objects@2x.png +%%DATADIR%%/%%VERSION%%/icons/fit_objects_32x32.png +%%DATADIR%%/%%VERSION%%/icons/fit_objects_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/fit_page.png +%%DATADIR%%/%%VERSION%%/icons/fit_page@2x.png +%%DATADIR%%/%%VERSION%%/icons/fit_page_32x32.png +%%DATADIR%%/%%VERSION%%/icons/fit_page_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/fit_width.png %%DATADIR%%/%%VERSION%%/icons/grid_visible.png %%DATADIR%%/%%VERSION%%/icons/ipe.png %%DATADIR%%/%%VERSION%%/icons/keyboard.png +%%DATADIR%%/%%VERSION%%/icons/keyboard@2x.png +%%DATADIR%%/%%VERSION%%/icons/keyboard_32x32.png %%DATADIR%%/%%VERSION%%/icons/mode_arc1.png %%DATADIR%%/%%VERSION%%/icons/mode_arc2.png %%DATADIR%%/%%VERSION%%/icons/mode_arc3.png @@ -78,7 +96,13 @@ man/man1/ipetoipe.1.gz %%DATADIR%%/%%VERSION%%/icons/mode_circle2.png %%DATADIR%%/%%VERSION%%/icons/mode_circle3.png %%DATADIR%%/%%VERSION%%/icons/mode_ink.png +%%DATADIR%%/%%VERSION%%/icons/mode_ink@2x.png +%%DATADIR%%/%%VERSION%%/icons/mode_ink_32x32.png +%%DATADIR%%/%%VERSION%%/icons/mode_ink_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/mode_label.png +%%DATADIR%%/%%VERSION%%/icons/mode_label@2x.png +%%DATADIR%%/%%VERSION%%/icons/mode_label_32x32.png +%%DATADIR%%/%%VERSION%%/icons/mode_label_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/mode_lines.png %%DATADIR%%/%%VERSION%%/icons/mode_marks.png %%DATADIR%%/%%VERSION%%/icons/mode_math.png @@ -94,8 +118,14 @@ man/man1/ipetoipe.1.gz %%DATADIR%%/%%VERSION%%/icons/mode_stretch.png %%DATADIR%%/%%VERSION%%/icons/mode_translate.png %%DATADIR%%/%%VERSION%%/icons/paste.png +%%DATADIR%%/%%VERSION%%/icons/paste@2x.png +%%DATADIR%%/%%VERSION%%/icons/paste_32x32.png +%%DATADIR%%/%%VERSION%%/icons/paste_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/pen.png %%DATADIR%%/%%VERSION%%/icons/redo.png +%%DATADIR%%/%%VERSION%%/icons/redo@2x.png +%%DATADIR%%/%%VERSION%%/icons/redo_32x32.png +%%DATADIR%%/%%VERSION%%/icons/redo_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/shift_key.png %%DATADIR%%/%%VERSION%%/icons/snapangle.png %%DATADIR%%/%%VERSION%%/icons/snapauto.png @@ -105,9 +135,21 @@ man/man1/ipetoipe.1.gz %%DATADIR%%/%%VERSION%%/icons/snapint.png %%DATADIR%%/%%VERSION%%/icons/snapvtx.png %%DATADIR%%/%%VERSION%%/icons/stop.png +%%DATADIR%%/%%VERSION%%/icons/stop@2x.png +%%DATADIR%%/%%VERSION%%/icons/stop_32x32.png +%%DATADIR%%/%%VERSION%%/icons/stop_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/undo.png +%%DATADIR%%/%%VERSION%%/icons/undo@2x.png +%%DATADIR%%/%%VERSION%%/icons/undo_32x32.png +%%DATADIR%%/%%VERSION%%/icons/undo_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/zoom_in.png +%%DATADIR%%/%%VERSION%%/icons/zoom_in@2x.png +%%DATADIR%%/%%VERSION%%/icons/zoom_in_32x32.png +%%DATADIR%%/%%VERSION%%/icons/zoom_in_32x32@2x.png %%DATADIR%%/%%VERSION%%/icons/zoom_out.png +%%DATADIR%%/%%VERSION%%/icons/zoom_out@2x.png +%%DATADIR%%/%%VERSION%%/icons/zoom_out_32x32.png +%%DATADIR%%/%%VERSION%%/icons/zoom_out_32x32@2x.png %%DATADIR%%/%%VERSION%%/lua/actions.lua %%DATADIR%%/%%VERSION%%/lua/editpath.lua %%DATADIR%%/%%VERSION%%/lua/main.lua @@ -124,3 +166,4 @@ man/man1/ipetoipe.1.gz %%DATADIR%%/%%VERSION%%/styles/beamer.isy %%DATADIR%%/%%VERSION%%/styles/colors.isy %%DATADIR%%/%%VERSION%%/styles/presentation.isy +share/pixmaps/ipe.png -- cgit