summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Golubev <fatzer2@gmail.com>2025-08-04 03:29:51 +0300
committerAlexander Golubev <fatzer2@gmail.com>2025-08-08 06:40:51 +0300
commit00aca3f2d1b56a10aa71a372041230d317efabe5 (patch)
tree48fe4baff648f59fa0b447d68de5c01517f8c5cf /src
parent8f59af1291a8e2536b311f86e1c0b442e7ad26df (diff)
downloadkrecipes-r14.1.x.tar.gz
krecipes-r14.1.x.zip
Use TQImage rather than TQPixmap in the backend-oriented coder14.1.x
TQImage is more suitable for i/o operations and long-term storage rather than TQPixmap (which is better for immediate display on the screen). The UI rarely does displays all those photos and does it one-by-one (i.e. there is no big gallery), so there is no significant performance penalty for the use of TQImage. On the contrary this way we should save some memory on allocations associated X11 stuff for pixmaps and loading time when the database contains a lot of photos. Note that there is yet another use of TQPixmap in `htmlexporter` which cannot be replaced because it uses TQPainter, which didn't supported QImage until Qt5. Signed-off-by: Alexander Golubev <fatzer2@gmail.com> (cherry picked from commit a6ab7f1c6dcf3076aa5488a790d81f42cbc93b48)
Diffstat (limited to 'src')
-rw-r--r--src/backends/qsqlrecipedb.cpp10
-rw-r--r--src/backends/qsqlrecipedb.h2
-rw-r--r--src/datablocks/recipe.cpp2
-rw-r--r--src/datablocks/recipe.h4
-rw-r--r--src/exporters/cookmlexporter.cpp2
-rw-r--r--src/exporters/htmlexporter.cpp6
-rw-r--r--src/exporters/kreexporter.cpp2
-rw-r--r--src/importers/kreimporter.cpp6
-rw-r--r--src/tests/CMakeLists.txt3
-rw-r--r--src/tests/checks.h2
-rw-r--r--src/tests/kretest.cpp4
11 files changed, 21 insertions, 22 deletions
diff --git a/src/backends/qsqlrecipedb.cpp b/src/backends/qsqlrecipedb.cpp
index 7d36a31..3146160 100644
--- a/src/backends/qsqlrecipedb.cpp
+++ b/src/backends/qsqlrecipedb.cpp
@@ -518,14 +518,14 @@ void TQSqlRecipeDB::storePhoto( int recipeID, const TQByteArray &data )
query.exec();
}
-void TQSqlRecipeDB::loadPhoto( int recipeID, TQPixmap &photo )
+void TQSqlRecipeDB::loadPhoto( int recipeID, TQImage &photo )
{
TQString command = TQString( "SELECT photo FROM recipes WHERE id=%1;" ).arg( recipeID );
TQSqlQuery query( command, database );
if ( query.isActive() && query.first() ) {
TQCString decodedPic;
- TQPixmap pix;
+ TQImage img;
KCodecs::base64Decode( query.value( 0 ).toCString(), decodedPic );
int len = decodedPic.size();
@@ -533,9 +533,9 @@ void TQSqlRecipeDB::loadPhoto( int recipeID, TQPixmap &photo )
TQByteArray picData( len );
memcpy( picData.data(), decodedPic.data(), len );
- bool ok = pix.loadFromData( picData, "JPEG" );
+ bool ok = img.loadFromData( picData, "JPEG" );
if ( ok )
- photo = pix;
+ photo = img;
}
}
}
@@ -624,7 +624,7 @@ void TQSqlRecipeDB::saveRecipe( Recipe *recipe )
TQBuffer buffer( ba );
buffer.open( IO_WriteOnly );
TQImageIO iio( &buffer, "JPEG" );
- iio.setImage( recipe->photo.convertToImage() );
+ iio.setImage( recipe->photo );
iio.write();
storePhoto( recipeID, ba );
diff --git a/src/backends/qsqlrecipedb.h b/src/backends/qsqlrecipedb.h
index b9211d7..04cac61 100644
--- a/src/backends/qsqlrecipedb.h
+++ b/src/backends/qsqlrecipedb.h
@@ -46,7 +46,7 @@ protected:
virtual void portOldDatabases( float version );
virtual void storePhoto( int recipeID, const TQByteArray &data );
- virtual void loadPhoto( int recipeID, TQPixmap &photo );
+ virtual void loadPhoto( int recipeID, TQImage &photo );
void loadRecipeMetadata( Recipe *recipe );
void search( RecipeList *list, int items, const RecipeSearchParameters & );
diff --git a/src/datablocks/recipe.cpp b/src/datablocks/recipe.cpp
index dd00f07..eb9c44b 100644
--- a/src/datablocks/recipe.cpp
+++ b/src/datablocks/recipe.cpp
@@ -28,7 +28,7 @@ void Recipe::empty( void )
title = TQString::null;
instructions = TQString::null;
- photo = TQPixmap();
+ photo = TQImage();
ingList.empty();
categoryList.clear();
authorList.clear();
diff --git a/src/datablocks/recipe.h b/src/datablocks/recipe.h
index c1c8aab..21b4a11 100644
--- a/src/datablocks/recipe.h
+++ b/src/datablocks/recipe.h
@@ -12,7 +12,7 @@
#define RECIPE_H
#include <tqstring.h>
-#include <tqpixmap.h>
+#include <tqimage.h>
#include <tqdatetime.h>
#include "ingredientlist.h"
@@ -48,7 +48,7 @@ public:
Yield yield;
TQString title;
TQString instructions;
- TQPixmap photo;
+ TQImage photo;
IngredientList ingList;
ElementList categoryList; // id+name
ElementList authorList; //authors' id+name
diff --git a/src/exporters/cookmlexporter.cpp b/src/exporters/cookmlexporter.cpp
index f8f9d40..f3dcdcf 100644
--- a/src/exporters/cookmlexporter.cpp
+++ b/src/exporters/cookmlexporter.cpp
@@ -90,7 +90,7 @@ TQString CookMLExporter::createContent( const RecipeList& recipes )
TQBuffer buffer( data );
buffer.open( IO_WriteOnly );
TQImageIO iio( &buffer, "JPEG" );
- iio.setImage( ( *recipe_it ).photo.convertToImage() );
+ iio.setImage( ( *recipe_it ).photo );
iio.write();
picbin_tag.appendChild( doc.createTextNode( KCodecs::base64Encode( data, true ) ) );
diff --git a/src/exporters/htmlexporter.cpp b/src/exporters/htmlexporter.cpp
index b4c44f4..148c33b 100644
--- a/src/exporters/htmlexporter.cpp
+++ b/src/exporters/htmlexporter.cpp
@@ -245,16 +245,16 @@ void HTMLExporter::storePhoto( const Recipe &recipe )
photo_name = "default_photo";
}
else {
- image = recipe.photo.convertToImage();
+ image = recipe.photo;
photo_name = TQString::number(recipe.recipeID);
}
- TQPixmap pm = image;//image.smoothScale( phwidth, 0, TQImage::ScaleMax );
+ //image.smoothScale( phwidth, 0, TQImage::ScaleMax );
TQFileInfo fi(fileName());
TQString photo_path = fi.dirPath(true) + "/" + fi.baseName() + "_photos/" + photo_name + ".png";
if ( !TQFile::exists( photo_path ) ) {
- pm.save( photo_path, "PNG" );
+ image.save( photo_path, "PNG" );
}
}
diff --git a/src/exporters/kreexporter.cpp b/src/exporters/kreexporter.cpp
index e0d27c0..db1f196 100644
--- a/src/exporters/kreexporter.cpp
+++ b/src/exporters/kreexporter.cpp
@@ -111,7 +111,7 @@ TQString KreExporter::createContent( const RecipeList& recipes )
TQBuffer buffer( data );
buffer.open( IO_WriteOnly );
TQImageIO iio( &buffer, "JPEG" );
- iio.setImage( ( *recipe_it ).photo.convertToImage() );
+ iio.setImage( ( *recipe_it ).photo );
iio.write();
xml += KCodecs::base64Encode( data, true );
diff --git a/src/importers/kreimporter.cpp b/src/importers/kreimporter.cpp
index 2e55589..5d728dc 100644
--- a/src/importers/kreimporter.cpp
+++ b/src/importers/kreimporter.cpp
@@ -184,14 +184,14 @@ void KreImporter::readDescription( const TQDomNodeList& l, Recipe *recipe )
TQCString decodedPic;
if ( pic.tagName() == "pic" )
kdDebug() << "Found photo" << endl;
- TQPixmap pix;
+ TQImage img;
KCodecs::base64Decode( TQCString( pic.text().latin1() ), decodedPic );
int len = decodedPic.size();
TQByteArray picData( len );
memcpy( picData.data(), decodedPic.data(), len );
- bool ok = pix.loadFromData( picData, "JPEG" );
+ bool ok = img.loadFromData( picData, "JPEG" );
if ( ok ) {
- recipe->photo = pix;
+ recipe->photo = img;
}
}
}
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 0b5495d..27f85ce 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -45,8 +45,7 @@ endfunction()
##### kretest (executable)
-# The test needs X11 for TQPixmap to run, hence not running it automatically
-tde_add_check_executable( kretest AUTOMOC
+tde_add_check_executable( kretest AUTOMOC TEST
SOURCES kretest.cpp
LINK
krecipesexporters-static krecipesimporters-static
diff --git a/src/tests/checks.h b/src/tests/checks.h
index 618d0c0..5409a33 100644
--- a/src/tests/checks.h
+++ b/src/tests/checks.h
@@ -66,7 +66,7 @@ bool check(const TQString &txt, double a, double b)
return true;
}
-bool check(const TQString &txt, const TQPixmap &a, const TQPixmap &b)
+bool check(const TQString &txt, const TQImage &a, const TQImage &b)
{
if ( a.size() != b.size() ) {
diff --git a/src/tests/kretest.cpp b/src/tests/kretest.cpp
index 93c1e1e..9b48e74 100644
--- a/src/tests/kretest.cpp
+++ b/src/tests/kretest.cpp
@@ -28,8 +28,8 @@ main(int argc, char *argv[])
TDEAboutData *about = new TDEAboutData("kretest", I18N_NOOP("kretest"), "1.0",
nullptr, TDEAboutData::License_GPL, nullptr, nullptr, nullptr, nullptr);
TDECmdLineArgs::init(argc, argv, about);
- // The test needs GUI for TQPixmap
- TDEApplication a;
+ TDEApplication::disableAutoDcopRegistration(); // will reduce noise when we run without X11
+ TDEApplication a(/* allowStyles =*/ false, /* GUIenabled =*/ false);
printf("Creating KreImporter.\n");
KreImporter importer;