/* * This file is part of the Trinity libraries. * * Copyright (C) 2022 Mavridis Philippe * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */ #include "svgrender.h" #include #ifdef HAVE_LIBART #include #include #include #endif TQImage renderSVG(TQByteArray ba, TQString svgExtension, int width, int height) { if( svgExtension != TQString("svg") && svgExtension != TQString("svgz") ) { return TQImage(); } #ifdef HAVE_LIBART /* Write svg data to a temporary file so that we can process it with KSVGIconEngine */ KTempFile tf(locateLocal("tmp", "tdehtml"), TQString(".%1").arg(svgExtension)); if( tf.status() != 0 ) { kdDebug(6060) << "[renderSVG] Cannot access temp file: " << tf.name() << endl; return TQImage(); } tf.dataStream()->writeRawBytes(ba, ba.size()); tf.sync(); /* Render the image */ TQImage *render = new TQImage(); KSVGIconEngine *svgEngine = new KSVGIconEngine(); if(svgEngine->load(width, height, tf.name()) ) { render = svgEngine->image(); } else { kdDebug(6060) << "[renderSVG] KSVGIconEngine could not load " << tf.name() << endl; return TQImage(); } /* Clean up */ tf.unlink(); delete svgEngine; return *render; #else kdDebug(6060) << "[renderSVG] tdelibs were built without libart support." << endl; return TQImage(); #endif }