View Issue Details

IDProjectCategoryView StatusLast Update
0008657ScribusGraphics / Image Framespublic2010-01-02 23:35
Reportermhx Assigned Tofschmid  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.5.0svn 
Summary0008657: [PATCH] Per-image override of PDF compression parameters
DescriptionA while ago I was suggesting [1] on #scribus-dev to add a feature to
Scribus that allows overriding PDF image compression parameters on a
per-image basis.

My motivation was that I wanted to have one of the images in my document
compressed as ZIP and all others as JPEG in the final PDF. The source
images were all in (losslessly compressed) TIFF format, so "Automatic"
compression gave me JPEG for all images. There was no way to have only
one image compressed as ZIP, other than a quick hack of pdflib_core that
forced ZIP compression for certain filenames...

Anyway, as promised, I've just found the time for a not-so-quick hack that
adds two controls to the Image Properties page that allow overriding the
compression method and/or compression quality individually for each image.

Patch against trunk is attached.

Feedback is very welcome, as this is my first hack on Scribus and I have
certainly overlooked something important... ;)

Cheers,
Marcus

[1] <mhx> Hi! Just a quick question: is it easily possible to force ZIP
      compression for certain images when exporting to PDF? A quick glance
      at pdflib_core.cpp suggests that "Auto" merely chooses "JPEG" all the
      time; (If I choose ZIP, my PDF is more than 3GB; if I choose Auto,
      one image - a map - looks very crappy.)
    <christoph_s> I guess you would have to apply the ompression in an
      image editor
    <mhx> Um?
    <christoph_s> although I don't see why. AFAIK, ZIP is not the best
      method for images
    <mhx> My source images are all ZIP compressed TIFFs. I don't mind all of
      the images to be JPEG compressed in the final PDF, just *the one* image
      for which JPEG compression is obviously unsuitable should be ZIP
      compressed.
    <mhx> (Ideally, one should be able to override the "default" compression
      somewhere in the image properties.)
    <christoph_s> then open the file in an image editor, and save it with
      ZIP compression
    <mhx> Um, again, that's what I have *for all my images*.
    <christoph_s> except one, you said
    <mhx> No. All images I've got in the document are ZIP compressed.
      Regardless, Scribus recompresses them as JPEG. And actually, that's what
      I *want*, because I don't want to manually convert my images to JPEG
      before importing them in Scribus. I want to be able to choose the JPEG
      quality when *exporting*, not when *importing*. However, I'd like to
      have *one file* *exported* as ZIP instead of JPEG.
    <christoph_s> that's not possible, and I doubt there is enough developer
      time to implement such a rarely requested feature
    <mhx> I'm not asking for anyone to implement it. If it's rarely
      requested, I assume it's not easily possible.
    <christoph_s> it takes time, but I think you are the first person who
      brought this up ;)
    <mhx> However, I think it would absolutely make sense to have something
      like this. I'll probably have a look at implementing this after I'm done
      with my project.
    <christoph_s> that's a great idea :)
TagsNo tags attached.
Patch

Activities

2009-12-20 19:05

 

scribus-trunk-override-compression.diff (17,777 bytes)   
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/pageitem.cpp scribus-trunk/scribus/pageitem.cpp
--- scribus-trunk-orig/scribus/pageitem.cpp	2009-12-20 02:34:27.000000000 +0100
+++ scribus-trunk/scribus/pageitem.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -123,6 +123,10 @@
 	UseEmbedded(other.UseEmbedded),
 	EmProfile(other.EmProfile),
 	IRender(other.IRender),
+	OverrideCompressionMethod(other.OverrideCompressionMethod),
+	CompressionMethodIndex(other.CompressionMethodIndex),
+	OverrideCompressionQuality(other.OverrideCompressionQuality),
+	CompressionQualityIndex(other.CompressionQualityIndex),
 
 	PictureIsAvailable(other.PictureIsAvailable),
 	OrigW(other.OrigW),
@@ -322,6 +326,10 @@
 	// Initialize superclass(es)
 	: QObject(pa), SingleObservable<PageItem>(pa->itemsChanged()),
 	// Initialize member variables
+	OverrideCompressionMethod(false),
+	CompressionMethodIndex(0),
+	OverrideCompressionQuality(false),
+	CompressionQualityIndex(0),
 	itemText(pa),
 	undoManager(UndoManager::instance()),
 	lineShadeVal(100),
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/pageitem.h scribus-trunk/scribus/pageitem.h
--- scribus-trunk-orig/scribus/pageitem.h	2009-12-20 02:34:27.000000000 +0100
+++ scribus-trunk/scribus/pageitem.h	2009-12-20 14:31:07.000000000 +0100
@@ -442,6 +442,11 @@
 	QString cmsProfile() const { return IProfile; }
 	void setCmsProfile(QString val) { IProfile = val; }
 	
+	bool OverrideCompressionMethod;
+	int CompressionMethodIndex;
+	bool OverrideCompressionQuality;
+	int CompressionQualityIndex;
+
 	/*! Flag to hiold image file availability */
 	bool PictureIsAvailable;
 	int OrigW;
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/pdflib_core.cpp scribus-trunk/scribus/pdflib_core.cpp
--- scribus-trunk-orig/scribus/pdflib_core.cpp	2009-12-20 14:27:36.000000000 +0100
+++ scribus-trunk/scribus/pdflib_core.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -501,7 +501,7 @@
 	return (succeed ? bytesWritten : 0);
 }
 
-int PDFLibCore::WriteJPEGImageToStream(ScImage& image, const QString& fn, int ObjNum, bool cmyk,
+int PDFLibCore::WriteJPEGImageToStream(ScImage& image, const QString& fn, int ObjNum, int quality, bool cmyk,
 										bool gray, bool sameFile, bool precal)
 {
 	bool succeed = true;
@@ -516,7 +516,7 @@
 		tmpFile  = QDir::convertSeparators(ScPaths::getTempFileDir() + "sc.jpg");
 		if ((gray) && (!precal))
 			image.convertToGray();
-		if (image.Convert2JPG(tmpFile, Options.Quality, cmyk, gray))
+		if (image.Convert2JPG(tmpFile, quality, cmyk, gray))
 			jpgFileName = tmpFile;
 	}
 	if (jpgFileName.isEmpty())
@@ -8918,6 +8918,7 @@
 						PutDoc("/ColorSpace /DeviceCMYK\n");
 				}
 			}
+			enum PDFOptions::PDFCompression compress_method = Options.CompressMethod;
 			enum PDFOptions::PDFCompression cm = Options.CompressMethod;
 			bool exportToCMYK = false, exportToGrayscale = false, jpegUseOriginal = false;
 			if (!Options.UseRGB && !(doc.HasCMS && Options.UseProfiles2 && !realCMYK))
@@ -8928,6 +8929,8 @@
 				else
 					exportToCMYK      = !Options.UseRGB;
 			}
+			if (c->OverrideCompressionMethod)
+				compress_method = cm = (enum PDFOptions::PDFCompression) c->CompressionMethodIndex;
 			if (extensionIndicatesJPEG(ext) && (cm != PDFOptions::Compression_None))
 			{
 				if (((Options.UseRGB || Options.UseProfiles2) && (cm == PDFOptions::Compression_Auto) && (c->effectsInUse.count() == 0) && (img.imgInfo.colorspace == ColorSpaceRGB)) && (!img.imgInfo.progressive) && (!((Options.RecalcPic) && (Options.PicRes < (qMax(72.0 / c->imageXScale(), 72.0 / c->imageYScale()))))))
@@ -8946,7 +8949,7 @@
 				}*/
 				else
 				{
-					if (Options.CompressMethod == PDFOptions::Compression_JPEG)
+					if (compress_method == PDFOptions::Compression_JPEG)
 					{
 						if (realCMYK || !((Options.UseRGB) || (Options.UseProfiles2)))
 						{
@@ -8964,7 +8967,7 @@
 			}
 			else
 			{
-				if ((Options.CompressMethod == PDFOptions::Compression_JPEG) || (Options.CompressMethod == PDFOptions::Compression_Auto))
+				if ((compress_method == PDFOptions::Compression_JPEG) || (compress_method == PDFOptions::Compression_Auto))
 				{
 					if (realCMYK || !((Options.UseRGB) || (Options.UseProfiles2)))
 					{
@@ -8975,7 +8978,7 @@
 							exportToCMYK      = !Options.UseRGB;
 					}
 					cm = PDFOptions::Compression_JPEG;
-					/*if (Options.CompressMethod == PDFOptions::Compression_Auto)
+					/*if (compress_method == PDFOptions::Compression_Auto)
 					{
 						QFileInfo fi(tmpFile);
 						if (fi.size() < im.size())
@@ -9011,7 +9014,12 @@
 			if ((hasGrayProfile) && (doc.HasCMS) && (Options.UseProfiles2) && (!hasColorEffect))
 				exportToGrayscale = true;
 			if (cm == PDFOptions::Compression_JPEG)
-				bytesWritten = WriteJPEGImageToStream(img, fn, imageObj, exportToCMYK, exportToGrayscale, jpegUseOriginal, (!hasColorEffect && hasGrayProfile));
+			{
+				int quality = c->OverrideCompressionQuality ? c->CompressionQualityIndex : Options.Quality;
+				if (c->OverrideCompressionQuality)
+					jpegUseOriginal = false;
+				bytesWritten = WriteJPEGImageToStream(img, fn, imageObj, quality, exportToCMYK, exportToGrayscale, jpegUseOriginal, (!hasColorEffect && hasGrayProfile));
+			}
 			else if (cm == PDFOptions::Compression_ZIP)
 				bytesWritten = WriteFlateImageToStream(img, imageObj, exportToCMYK, exportToGrayscale, (!hasColorEffect && hasGrayProfile));
 			else
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/pdflib_core.h scribus-trunk/scribus/pdflib_core.h
--- scribus-trunk-orig/scribus/pdflib_core.h	2009-12-20 02:34:27.000000000 +0100
+++ scribus-trunk/scribus/pdflib_core.h	2009-12-20 14:31:07.000000000 +0100
@@ -105,7 +105,7 @@
 	bool       EncodeArrayToStream(const QByteArray& in, int ObjNum);
 
 	int     WriteImageToStream(ScImage& image, int ObjNum, bool cmyk, bool gray, bool precal);
-	int     WriteJPEGImageToStream(ScImage& image, const QString& fn, int ObjNum, bool cmyk, bool gray, bool sameFile, bool precal);
+	int     WriteJPEGImageToStream(ScImage& image, const QString& fn, int ObjNum, int quality, bool cmyk, bool gray, bool sameFile, bool precal);
 	int     WriteFlateImageToStream(ScImage& image, int ObjNum, bool cmyk, bool gray, bool precal);
 
 	void    CalcOwnerKey(const QString & Owner, const QString & User);
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/plugins/fileloader/scribus150format/scribus150format.cpp scribus-trunk/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
--- scribus-trunk-orig/scribus/plugins/fileloader/scribus150format/scribus150format.cpp	2009-12-20 14:27:36.000000000 +0100
+++ scribus-trunk/scribus/plugins/fileloader/scribus150format/scribus150format.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -2348,6 +2348,10 @@
 		currItem->UseEmbedded = attrs.valueAsInt("EMBEDDED", 1);
 		currItem->pixm.imgInfo.lowResType = attrs.valueAsInt("ImageRes", 1);
 		currItem->pixm.imgInfo.actualPageNumber = attrs.valueAsInt("Pagenumber", 0);
+		if ((currItem->OverrideCompressionMethod = attrs.hasAttribute("COMPRESSIONMETHOD")))
+			currItem->CompressionMethodIndex = attrs.valueAsInt("COMPRESSIONMETHOD");
+		if ((currItem->OverrideCompressionQuality = attrs.hasAttribute("COMPRESSIONQUALITY")))
+			currItem->CompressionQualityIndex = attrs.valueAsInt("COMPRESSIONQUALITY");
 		if (currItem->asLatexFrame())
 		{
 			currItem->setImageXYOffset(attrs.valueAsDouble("LOCALX") * scx, attrs.valueAsDouble("LOCALY") * scy);
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp scribus-trunk/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
--- scribus-trunk-orig/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	2009-12-20 02:34:29.000000000 +0100
+++ scribus-trunk/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -1662,6 +1662,13 @@
 	docu.writeAttribute("EPROF", item->EmProfile);
 	docu.writeAttribute("IRENDER",item->IRender);
 	docu.writeAttribute("EMBEDDED", item->UseEmbedded ? 1 : 0);
+	if (item->asImageFrame())
+	{
+		if (item->OverrideCompressionMethod)
+			docu.writeAttribute("COMPRESSIONMETHOD", item->CompressionMethodIndex);
+		if (item->OverrideCompressionQuality)
+			docu.writeAttribute("COMPRESSIONQUALITY", item->CompressionQualityIndex);
+	}
 	docu.writeAttribute("LOCK", item->locked() ? 1 : 0);
 	docu.writeAttribute("LOCKR", item->sizeLocked() ? 1 : 0);
 	docu.writeAttribute("REVERS", item->reversed() ? 1 : 0);
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/scribusdoc.cpp scribus-trunk/scribus/scribusdoc.cpp
--- scribus-trunk-orig/scribus/scribusdoc.cpp	2009-12-20 02:34:27.000000000 +0100
+++ scribus-trunk/scribus/scribusdoc.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -11449,6 +11449,48 @@
 	changed();
 }
 
+void ScribusDoc::itemSelection_SetCompressionMethod(int cmIndex, Selection * customSelection)
+{
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	//TODO Add Undo
+	for (uint i = 0; i < selectedItemCount; ++i)
+	{
+		PageItem *currItem = itemSelection->itemAt(i);
+		if (currItem && currItem->itemType() == PageItem::ImageFrame)
+		{
+			if ((currItem->OverrideCompressionMethod = cmIndex >= 0))
+			{
+				currItem->CompressionMethodIndex = cmIndex;
+			}
+		}
+	}
+}
+
+void ScribusDoc::itemSelection_SetCompressionQuality(int cqIndex, Selection * customSelection)
+{
+	Selection* itemSelection = (customSelection!=0) ? customSelection : m_Selection;
+	assert(itemSelection!=0);
+	uint selectedItemCount=itemSelection->count();
+	if (selectedItemCount == 0)
+		return;
+	//TODO Add Undo
+	for (uint i = 0; i < selectedItemCount; ++i)
+	{
+		PageItem *currItem = itemSelection->itemAt(i);
+		if (currItem && currItem->itemType() == PageItem::ImageFrame)
+		{
+			if ((currItem->OverrideCompressionQuality = cqIndex >= 0))
+			{
+				currItem->CompressionQualityIndex = cqIndex;
+			}
+		}
+	}
+}
+
 QMap<PageItem*, QString> ScribusDoc::getDocItemNames(PageItem::ItemType itemType)
 {
 	QMap<PageItem*, QString> namesMap;
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/scribusdoc.h scribus-trunk/scribus/scribusdoc.h
--- scribus-trunk-orig/scribus/scribusdoc.h	2009-12-20 02:34:27.000000000 +0100
+++ scribus-trunk/scribus/scribusdoc.h	2009-12-20 14:31:07.000000000 +0100
@@ -843,6 +843,8 @@
 	void itemSelection_resetOpticalMargins(Selection* customSelection=0);
 	void itemSelection_SetColorProfile(const QString& profileName, Selection* customSelection=0);
 	void itemSelection_SetRenderIntent(int intentIndex, Selection* customSelection=0);
+	void itemSelection_SetCompressionMethod(int cmIndex, Selection* customSelection=0);
+	void itemSelection_SetCompressionQuality(int cqIndex, Selection* customSelection=0);
 	
 //	void chAbStyle(PageItem *currItem, int s);
 
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/ui/propertiespalette.cpp scribus-trunk/scribus/ui/propertiespalette.cpp
--- scribus-trunk-orig/scribus/ui/propertiespalette.cpp	2009-12-20 02:34:24.000000000 +0100
+++ scribus-trunk/scribus/ui/propertiespalette.cpp	2009-12-20 14:31:07.000000000 +0100
@@ -1381,6 +1381,23 @@
 	GroupBoxCMLayout->addWidget(MonitorI);
 	pageLayout_4->addWidget(GroupBoxCM);
 
+	GroupBoxCompression = new QFrame( page_4 );
+	GroupBoxCompression->setFrameShape( QFrame::NoFrame );
+	GroupBoxCompression->setFrameShadow( QFrame::Plain );
+	GroupBoxCompressionLayout = new QVBoxLayout( GroupBoxCompression );
+	GroupBoxCompressionLayout->setSpacing( 2 );
+	GroupBoxCompressionLayout->setMargin( 5 );
+	GroupBoxCompressionLayout->setAlignment( Qt::AlignTop );
+	TextCompressionMethod = new QLabel( GroupBoxCompression );
+	GroupBoxCompressionLayout->addWidget( TextCompressionMethod );
+	CompressionMethod = new ScComboBox( GroupBoxCompression );
+	GroupBoxCompressionLayout->addWidget(CompressionMethod);
+	TextCompressionQuality = new QLabel( GroupBoxCompression );
+	GroupBoxCompressionLayout->addWidget( TextCompressionQuality );
+	CompressionQuality = new ScComboBox( GroupBoxCompression );
+	GroupBoxCompressionLayout->addWidget( CompressionQuality );
+	pageLayout_4->addWidget( GroupBoxCompression );
+
 	QSpacerItem* spacer9 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
 	pageLayout_4->addItem( spacer9 );
 	idImageItem=TabStack->addItem( page_4, "&Image" );
@@ -1578,6 +1595,8 @@
 	connect(LineW, SIGNAL(valueChanged(double)), this, SLOT(handlePathOffs()));
 	connect(InputP, SIGNAL(activated(const QString&)), this, SLOT(ChangeProfile(const QString&)));
 	connect(MonitorI, SIGNAL(activated(int)), this, SLOT(ChangeIntent()));
+	connect(CompressionMethod, SIGNAL(activated(int)), this, SLOT(ChangeCompressionMethod()));
+	connect(CompressionQuality, SIGNAL(activated(int)), this, SLOT(ChangeCompressionQuality()));
 	connect(NameEdit, SIGNAL(Leaved()), this, SLOT(NewName()));
 //	connect(langCombo, SIGNAL(activated(int)), this, SLOT(NewLanguage()));
 	connect( TabsButton, SIGNAL( clicked() ), this, SLOT( ManageTabs() ) );
@@ -2165,6 +2184,8 @@
 		imagePageNumber->setMaximum(CurItem->pixm.imgInfo.numberOfPages);
 		imagePageNumber->setValue(CurItem->pixm.imgInfo.actualPageNumber);
 		connect(imagePageNumber, SIGNAL(valueChanged(int)), this, SLOT(NewPage()));
+		CompressionMethod->setCurrentIndex(CurItem->OverrideCompressionMethod ? CurItem->CompressionMethodIndex + 1 : 0);
+		CompressionQuality->setCurrentIndex(CurItem->OverrideCompressionQuality ? CurItem->CompressionQualityIndex + 1 : 0);
 	}
 	Revert->setChecked(CurItem->reversed());
 	setTextFlowMode(CurItem->textFlowMode());
@@ -4951,6 +4972,20 @@
 	doc->itemSelection_SetRenderIntent(MonitorI->currentIndex());
 }
 
+void PropertiesPalette::ChangeCompressionMethod()
+{
+	if (!HaveDoc || !HaveItem || !m_ScMW || m_ScMW->ScriptRunning)
+		return;
+	doc->itemSelection_SetCompressionMethod(CompressionMethod->currentIndex() - 1);
+}
+
+void PropertiesPalette::ChangeCompressionQuality()
+{
+	if (!HaveDoc || !HaveItem || !m_ScMW || m_ScMW->ScriptRunning)
+		return;
+	doc->itemSelection_SetCompressionQuality(CompressionQuality->currentIndex() - 1);
+}
+
 void PropertiesPalette::ShowCMS()
 {
 	if (!m_ScMW || m_ScMW->ScriptRunning)
@@ -5429,6 +5464,8 @@
 	EditPSDProps->setText( tr("Extended Image Properties"));
 	TextCms1->setText( tr("Input Profile:"));
 	TextCms2->setText( tr("Rendering Intent:"));
+	TextCompressionMethod->setText( tr("PDF Compression Method:"));
+	TextCompressionQuality->setText( tr("PDF Compression Quality:"));
 // 	QList<QAction*> actList = lineSpacingPop->actions();
 // 	actList[0]->setText( tr("Fixed Linespacing"));
 // 	actList[1]->setText( tr("Automatic Linespacing"));
@@ -5446,6 +5483,23 @@
 	MonitorI->addItem( tr("Saturation"));
 	MonitorI->addItem( tr("Absolute Colorimetric"));
 	MonitorI->setCurrentIndex(oldMonitorI);
+	int oldCompressionMethod=CompressionMethod->currentIndex();
+	CompressionMethod->clear();
+	CompressionMethod->addItem( tr( "Global" ) );
+	CompressionMethod->addItem( tr( "Automatic" ) );
+	CompressionMethod->addItem( tr( "Lossy - JPEG" ) );
+	CompressionMethod->addItem( tr( "Lossless - Zip" ) );
+	CompressionMethod->addItem( tr( "None" ) );
+	CompressionMethod->setCurrentIndex(oldCompressionMethod);
+	int oldCompressionQuality=CompressionQuality->currentIndex();
+	CompressionQuality->clear();
+	CompressionQuality->addItem( tr( "Global" ) );
+	CompressionQuality->addItem( tr( "Maximum" ) );
+	CompressionQuality->addItem( tr( "High" ) );
+	CompressionQuality->addItem( tr( "Medium" ) );
+	CompressionQuality->addItem( tr( "Low" ) );
+	CompressionQuality->addItem( tr( "Minimum" ) );
+	CompressionQuality->setCurrentIndex(oldCompressionQuality);
 	int oldLineStyle = LStyle->currentIndex();
 	LStyle->clear();
 	LStyle->updateList();
@@ -5732,6 +5786,8 @@
 	Aspect->setToolTip( tr("Use image proportions rather than those of the frame"));
 	InputP->setToolTip( tr("Source profile of the image"));
 	MonitorI->setToolTip( tr("Rendering intent for the image"));
+	CompressionMethod->setToolTip( tr("Compression method used in PDF export for the image"));
+	CompressionQuality->setToolTip( tr("Compression quality used in PDF export for the image"));
 }
 
 
diff -ruN --exclude='.*.swp' scribus-trunk-orig/scribus/ui/propertiespalette.h scribus-trunk/scribus/ui/propertiespalette.h
--- scribus-trunk-orig/scribus/ui/propertiespalette.h	2009-12-20 02:34:24.000000000 +0100
+++ scribus-trunk/scribus/ui/propertiespalette.h	2009-12-20 14:31:07.000000000 +0100
@@ -315,6 +315,8 @@
 	void handleOverprint(int);
 	void ChangeProfile(const QString& prn);
 	void ChangeIntent();
+	void ChangeCompressionMethod();
+	void ChangeCompressionQuality();
 	void NewName();
 	void NewLanguage();
 	void HandleTLines();
@@ -384,6 +386,7 @@
 	QVBoxLayout* DistanceLayout3;
 	QGridLayout* GroupBox3aLayout;
 	QVBoxLayout* GroupBoxCMLayout;
+	QVBoxLayout* GroupBoxCompressionLayout;
 	QVBoxLayout* textFlowOptionsLayout;
 	QVBoxLayout* textFlowOptionsLayout2;
 	QHBoxLayout* layout23;
@@ -450,6 +453,8 @@
 	QLabel* LineModeT;
 	QLabel* TextCms1;
 	QLabel* TextCms2;
+	QLabel* TextCompressionMethod;
+	QLabel* TextCompressionQuality;
 	QLabel* edgesLabel;
 	QLabel* ChBaseTxt;
 	QLabel* ScaleTxt;
@@ -511,6 +516,7 @@
 	QGroupBox* GeoGroup;
 	QGroupBox* LayerGroup;
 	QFrame* GroupBoxCM;
+	QFrame* GroupBoxCompression;
 	QGroupBox* TLines;
 	QGroupBox* GroupBox3a;
 	QGroupBox* TransGroup;
@@ -537,6 +543,8 @@
 	QComboBox* langCombo;
 	QComboBox* InputP;
 	QComboBox* MonitorI;
+	QComboBox* CompressionMethod;
+	QComboBox* CompressionQuality;
 	QComboBox* LineMode;
 	QComboBox* lineSpacingModeCombo;
 	ColorCombo* TxStroke;

cbradney

2010-01-02 23:35

administrator   ~0023018

Thanks!

Issue History

Date Modified Username Field Change
2009-12-20 19:05 mhx New Issue
2009-12-20 19:05 mhx File Added: scribus-trunk-override-compression.diff
2009-12-21 02:20 christoph_s Status new => assigned
2009-12-21 02:20 christoph_s Assigned To => jghali
2009-12-21 08:02 jghali Assigned To jghali =>
2009-12-21 08:02 jghali Status assigned => new
2009-12-21 13:51 fschmid Status new => resolved
2009-12-21 13:51 fschmid Fixed in Version => 1.5.0svn
2009-12-21 13:51 fschmid Resolution open => fixed
2009-12-21 13:51 fschmid Assigned To => fschmid
2010-01-02 23:35 cbradney Note Added: 0023018
2010-01-02 23:35 cbradney Status resolved => closed
2015-09-17 20:10 Kunda Category Graphics / Image Frames => Graphics/Img Frames
2015-09-17 20:11 Kunda Category Graphics/Img Frames => Graphics / Image Frames