summaryrefslogtreecommitdiffstats
path: root/src/svg-view-widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/svg-view-widget.cpp')
-rw-r--r--src/svg-view-widget.cpp244
1 files changed, 0 insertions, 244 deletions
diff --git a/src/svg-view-widget.cpp b/src/svg-view-widget.cpp
deleted file mode 100644
index fa2988166..000000000
--- a/src/svg-view-widget.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Functions and callbacks for generic SVG view and widget.
- *
- * Authors:
- * Lauris Kaplinski <lauris@kaplinski.com>
- * Ralf Stephan <ralf@ark.in-berlin.de>
- * Abhishek Sharma
- * Jon A. Cruz <jon@joncruz.org>
- *
- * Copyright (C) 2010 authors
- * Copyright (C) 2001-2002 Lauris Kaplinski
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Released under GNU GPL, read the file 'COPYING' for more information
- */
-
-#include "display/sp-canvas.h"
-#include "display/sp-canvas-group.h"
-#include "display/canvas-arena.h"
-#include "document.h"
-#include "svg-view.h"
-#include "svg-view-widget.h"
-#include "util/units.h"
-
-static void sp_svg_view_widget_dispose(GObject *object);
-
-static void sp_svg_view_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
-static void sp_svg_view_widget_size_request (GtkWidget *widget, GtkRequisition *req);
-
-static void sp_svg_view_widget_get_preferred_width(GtkWidget *widget,
- gint *minimal_width,
- gint *natural_width);
-
-static void sp_svg_view_widget_get_preferred_height(GtkWidget *widget,
- gint *minimal_height,
- gint *natural_height);
-
-static void sp_svg_view_widget_view_resized (SPViewWidget *vw, Inkscape::UI::View::View *view, gdouble width, gdouble height);
-
-G_DEFINE_TYPE(SPSVGSPViewWidget, sp_svg_view_widget, SP_TYPE_VIEW_WIDGET);
-
-/**
- * Callback to initialize SPSVGSPViewWidget vtable.
- */
-static void sp_svg_view_widget_class_init(SPSVGSPViewWidgetClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- SPViewWidgetClass *vw_class = SP_VIEW_WIDGET_CLASS (klass);
-
- object_class->dispose = sp_svg_view_widget_dispose;
-
- widget_class->size_allocate = sp_svg_view_widget_size_allocate;
- widget_class->get_preferred_width = sp_svg_view_widget_get_preferred_width;
- widget_class->get_preferred_height = sp_svg_view_widget_get_preferred_height;
-
- vw_class->view_resized = sp_svg_view_widget_view_resized;
-}
-
-/**
- * Callback to initialize SPSVGSPViewWidget object.
- */
-static void sp_svg_view_widget_init(SPSVGSPViewWidget *vw)
-{
- SPCanvasItem *parent;
-
- /* Settings */
- vw->resize = FALSE;
- vw->maxwidth = 400.0;
- vw->maxheight = 400.0;
-
- /* ScrolledWindow */
- vw->sw = gtk_scrolled_window_new (nullptr, nullptr);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(vw->sw), GTK_SHADOW_NONE);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (vw->sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (vw), vw->sw);
- gtk_widget_show (vw->sw);
-
- /* Canvas */
- vw->canvas = SPCanvas::createAA();
-
- auto css_provider = gtk_css_provider_new();
- auto style_context = gtk_widget_get_style_context(GTK_WIDGET(vw->canvas));
-
- gtk_css_provider_load_from_data(css_provider,
- "SPCanvas {\n"
- " background-color: white;\n"
- "}\n",
- -1, nullptr);
-
- gtk_style_context_add_provider(style_context,
- GTK_STYLE_PROVIDER(css_provider),
- GTK_STYLE_PROVIDER_PRIORITY_USER);
-
- gtk_container_add (GTK_CONTAINER (vw->sw), vw->canvas);
- gtk_widget_show (vw->canvas);
-
- /* View */
- parent = sp_canvas_item_new(SP_CANVAS(vw->canvas)->getRoot(), SP_TYPE_CANVAS_GROUP, nullptr);
- Inkscape::UI::View::View *view = Inkscape::GC::release(new SPSVGView (SP_CANVAS_GROUP (parent)));
- sp_view_widget_set_view (SP_VIEW_WIDGET (vw), view);
-}
-
-/*
- * Destructor callback for SPSVGSPViewWidget objects.
- */
-static void sp_svg_view_widget_dispose(GObject *object)
-{
- SPSVGSPViewWidget *vw = SP_SVG_VIEW_WIDGET (object);
-
- vw->canvas = nullptr;
-
- if (G_OBJECT_CLASS(sp_svg_view_widget_parent_class)->dispose) {
- G_OBJECT_CLASS(sp_svg_view_widget_parent_class)->dispose(object);
- }
-}
-
-/**
- * Callback connected with size_request signal.
- */
-static void sp_svg_view_widget_size_request(GtkWidget *widget, GtkRequisition *req)
-{
- SPSVGSPViewWidget *vw = SP_SVG_VIEW_WIDGET (widget);
- Inkscape::UI::View::View *v = SP_VIEW_WIDGET_VIEW (widget);
-
- if (GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->get_preferred_width &&
- GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->get_preferred_height) {
- gint width_min, height_min, width_nat, height_nat;
-
- GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->get_preferred_width(widget, &width_min, &width_nat);
- GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->get_preferred_height(widget, &height_min, &height_nat);
- req->width=width_min;
- req->height=height_min;
- }
-
- if (v->doc()) {
- SPSVGView *svgv;
- GtkPolicyType hpol, vpol;
- gdouble width, height;
-
- svgv = static_cast<SPSVGView*> (v);
- width = (v->doc())->getWidth().value("px") * svgv->_hscale;
- height = (v->doc())->getHeight().value("px") * svgv->_vscale;
-
- if (width <= vw->maxwidth) {
- hpol = GTK_POLICY_NEVER;
- req->width = (gint) (width + 0.5);
- } else {
- hpol = GTK_POLICY_AUTOMATIC;
- req->width = (gint) (vw->maxwidth + 0.5);
- }
- if (height <= vw->maxheight) {
- vpol = GTK_POLICY_NEVER;
- req->height = (gint) (height + 8.0);
- } else {
- vpol = GTK_POLICY_AUTOMATIC;
- req->height = (gint) (vw->maxheight + 2.0);
- }
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (vw->sw), hpol, vpol);
- }
-}
-
-static void sp_svg_view_widget_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
-{
- GtkRequisition requisition;
- sp_svg_view_widget_size_request(widget, &requisition);
- *minimal_width = *natural_width = requisition.width;
-}
-
-static void sp_svg_view_widget_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
-{
- GtkRequisition requisition;
- sp_svg_view_widget_size_request(widget, &requisition);
- *minimal_height = *natural_height = requisition.height;
-}
-
-/**
- * Callback connected with size_allocate signal.
- */
-static void sp_svg_view_widget_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
-{
- SPSVGSPViewWidget *svgvw = SP_SVG_VIEW_WIDGET (widget);
-
- if (GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->size_allocate) {
- GTK_WIDGET_CLASS(sp_svg_view_widget_parent_class)->size_allocate(widget, allocation);
- }
-
- if (!svgvw->resize) {
- static_cast<SPSVGView*>(SP_VIEW_WIDGET_VIEW (svgvw))->setRescale (TRUE, TRUE,
- (gdouble) allocation->width - 1.0, (gdouble) allocation->height - 1.0);
- }
-}
-
-/**
- * Callback connected with view_resized signal.
- */
-static void sp_svg_view_widget_view_resized(SPViewWidget *vw, Inkscape::UI::View::View */*view*/, gdouble width, gdouble height)
-{
- SPSVGSPViewWidget *svgvw = SP_SVG_VIEW_WIDGET (vw);
-
- if (svgvw->resize) {
- gtk_widget_set_size_request (svgvw->canvas, (int)width, (int)height);
- gtk_widget_queue_resize (GTK_WIDGET (vw));
- }
-}
-
-GtkWidget *sp_svg_view_widget_new(SPDocument *doc)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (doc != nullptr, NULL);
-
- widget = (GtkWidget*)g_object_new (SP_TYPE_SVG_VIEW_WIDGET, nullptr);
-
- reinterpret_cast<SPSVGView*>(SP_VIEW_WIDGET_VIEW (widget))->setDocument (doc);
-
- return widget;
-}
-
-void SPSVGSPViewWidget::setResize(bool resize, gdouble width, gdouble height)
-{
- g_return_if_fail( !resize || (width > 0.0) );
- g_return_if_fail( !resize || (height > 0.0) );
-
- this->resize = resize;
- this->maxwidth = width;
- this->maxheight = height;
-
- if ( resize ) {
- gtk_widget_queue_resize( GTK_WIDGET(this) );
- }
-}
-
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :