/*
  widgetinspector_export_actions.cpp

  This file is part of GammaRay, the Qt application inspection and
  manipulation tool.

  Copyright (C) 2011-2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
  Author: Volker Krause <volker.krause@kdab.com>

  This program 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 2 of the License, or
  (at your option) any later version.

  This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/**
 * @file widgetinspector_export_actions.cpp
 * dlopen hack to avoid dependencies on QtSvg and QtDesigner in the main probe.
 */

#include "config-gammaray.h"
#include "uiextractor.h"

#ifdef HAVE_QT_SVG
#include <QSvgGenerator>
#endif

#ifdef HAVE_QT_PRINTSUPPORT
#include <QPrinter>
#endif

#include <QPainter>
#include <QWidget>
#include <QFile>

extern "C" {

#ifdef HAVE_QT_SVG
Q_DECL_EXPORT void gammaray_save_widget_to_svg(QWidget *widget, const QString &fileName)
{
  QSvgGenerator svg;
  svg.setFileName(fileName);
  svg.setSize(widget->size());
  svg.setViewBox(QRect(QPoint(0, 0), widget->size()));
  QPainter painter(&svg);
  widget->render(&painter);
  painter.end();
}
#endif

#ifdef HAVE_QT_DESIGNER
Q_DECL_EXPORT void gammaray_save_widget_to_ui(QWidget *widget, const QString &fileName)
{
  QFile file(fileName);
  if (file.open(QFile::WriteOnly)) {
    GammaRay::UiExtractor formBuilder;
    formBuilder.save(&file, widget);
  }
}
#endif

#ifdef HAVE_QT_PRINTSUPPORT
Q_DECL_EXPORT void gammaray_save_widget_to_pdf(QWidget *widget, const QString &fileName)
{
  QPrinter printer(QPrinter::ScreenResolution);
  printer.setOutputFileName(fileName);
  printer.setOutputFormat(QPrinter::PdfFormat);
  printer.setPageMargins(0, 0, 0, 0, QPrinter::DevicePixel);
  printer.setPaperSize(widget->size(), QPrinter::DevicePixel);

  widget->render(&printer);
}
#endif

}
