summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Golubev <fatzer2@gmail.com>2025-08-20 10:19:03 +0300
committerFat-Zer <fatzer2@gmail.com>2025-08-21 11:06:58 +0000
commit5602e01ff0a6f599b44cfff35251f959b53b5bbb (patch)
tree1001e4251a3faed49e76477585479c2ea3a1c628
parent87107616b88b2b14f31806e1e77abf458a8875b8 (diff)
downloadkbarcode-5602e01ff0a6f599b44cfff35251f959b53b5bbb.tar.gz
kbarcode-5602e01ff0a6f599b44cfff35251f959b53b5bbb.zip
Fix build WITH_NATIVE_GNU_BARCODE enabled.HEADmaster
I verified that app compiles and starts fine with the GnuBarcode backend enabled. During runtime no noticeable regressions were spotted. The whole virtual BarkodeEngine::operator=() thing seems to me like quite a lousy design, but I don't feel comfortable enough to rework the code. Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
-rw-r--r--ConfigureChecks.cmake5
-rw-r--r--kbarcode/CMakeLists.txt1
-rw-r--r--kbarcode/barkodeengine.h1
-rw-r--r--kbarcode/gnubarcode.cpp27
-rw-r--r--kbarcode/gnubarcode.h1
5 files changed, 33 insertions, 2 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index cc77191..bbcb85b 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -30,10 +30,11 @@ endif( WITH_GCC_VISIBILITY )
if( WITH_NATIVE_GNU_BARCODE )
check_include_file( "barcode.h" HAVE_NATIVE_GNU_BARCODE )
- if( HAVE_NATIVE_GNU_BARCODE )
+ find_library( GNU_BARCODE_LIBRARY barcode )
+ if( HAVE_NATIVE_GNU_BARCODE AND GNU_BARCODE_LIBRARY )
set( _ENABLE_NATIVE_GNU_BARCODE 1 )
else()
- tde_message_fatal( "Barcode is requested, but GNU Barcode header was not found on your system" )
+ tde_message_fatal( "Barcode is requested, but GNU Barcode library was not found on your system" )
endif()
endif( WITH_NATIVE_GNU_BARCODE )
diff --git a/kbarcode/CMakeLists.txt b/kbarcode/CMakeLists.txt
index be08786..430fc00 100644
--- a/kbarcode/CMakeLists.txt
+++ b/kbarcode/CMakeLists.txt
@@ -61,6 +61,7 @@ tde_add_executable( ${PROJECT_NAME} AUTOMOC
tdeabc-shared
${KJS_LIBRARIES}
${PCRE2_LIBRARIES}
+ ${GNU_BARCODE_LIBRARY}
DESTINATION ${BIN_INSTALL_DIR}
)
diff --git a/kbarcode/barkodeengine.h b/kbarcode/barkodeengine.h
index 0975baf..f3bbc6c 100644
--- a/kbarcode/barkodeengine.h
+++ b/kbarcode/barkodeengine.h
@@ -53,6 +53,7 @@ class BarkodeEngine{
BarkodeEngine();
virtual ~BarkodeEngine();
+ // FIXME: the operator should rather be called copySettings()
virtual const BarkodeEngine & operator=( const BarkodeEngine & rhs ) = 0;
virtual EEngine engine() const = 0;
diff --git a/kbarcode/gnubarcode.cpp b/kbarcode/gnubarcode.cpp
index deef484..5767493 100644
--- a/kbarcode/gnubarcode.cpp
+++ b/kbarcode/gnubarcode.cpp
@@ -165,6 +165,33 @@ void GnuBarcode::setupSize()
m_size.setHeight( (int)(m_item->height * m_scaley) );
}
+const BarkodeEngine &GnuBarcode::operator=( const BarkodeEngine & rhs )
+{
+ const GnuBarcode* gb = dynamic_cast<const GnuBarcode*>(&rhs);
+
+ if( gb )
+ {
+ m_bar_height = gb->m_bar_height;
+ m_barcode_height = gb->m_barcode_height;
+ m_font_size = gb->m_font_size;
+
+ m_scalex = gb->m_scalex;
+ m_scaley = gb->m_scaley;
+ m_scale_ps_x = gb->m_scale_ps_x;
+ m_scale_ps_y = gb->m_scale_ps_y;
+ m_size = gb->m_size;
+
+ if( m_item )
+ {
+ tqDebug("GnuBarcode::operator=() : deleting internal barcode item");
+ Barcode_Delete( m_item );
+ m_item = NULL;
+ }
+ }
+
+ return *this;
+}
+
int GnuBarcode::drawBars( TQPainter* painter, int x, int y )
{
#if 0
diff --git a/kbarcode/gnubarcode.h b/kbarcode/gnubarcode.h
index 1f71e79..1f66912 100644
--- a/kbarcode/gnubarcode.h
+++ b/kbarcode/gnubarcode.h
@@ -41,6 +41,7 @@ class GnuBarcode : public BarkodeEngine {
void update( const TQPaintDevice* device );
void drawBarcode( TQPainter & painter, int x, int y );
+ const BarkodeEngine & operator=( const BarkodeEngine & rhs );
private:
/** Draws the barcodes bars if @p painter is not 0.
* Otherwise only the required width is returned.