sp-clippath.cpp revision 2b635337710b879262acf4906dd85ee99b69f474
#define __SP_CLIPPATH_C__
/*
* SVG <clipPath> implementation
*
* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
*
* Copyright (C) 2001-2002 authors
* Copyright (C) 2001 Ximian, Inc.
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include <cstring>
#include <string>
#include "display/nr-arena.h"
#include "display/nr-arena-group.h"
#include "enums.h"
#include "attributes.h"
#include "document.h"
#include "document-private.h"
#include "sp-item.h"
#include "libnr/nr-matrix-ops.h"
#include "sp-clippath.h"
struct SPClipPathView {
unsigned int key;
};
static void sp_clippath_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref);
static Inkscape::XML::Node *sp_clippath_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
SPClipPathView *sp_clippath_view_new_prepend(SPClipPathView *list, unsigned int key, NRArenaItem *arenaitem);
static SPObjectGroupClass *parent_class;
sp_clippath_get_type(void)
{
if (!type) {
sizeof(SPClipPathClass),
sizeof(SPClipPath),
16,
NULL, /* value_table */
};
}
return type;
}
static void
{
}
static void
{
}
static void
{
/* Register ourselves */
}
static void
{
if (SP_OBJECT_DOCUMENT(object)) {
/* Unregister ourselves */
}
/* We simply unref and let item manage this in handler */
}
}
}
static void
{
switch (key) {
case SP_ATTR_CLIPPATHUNITS:
if (value) {
}
}
break;
default:
break;
}
}
static void
{
/* Invoke SPObjectGroup implementation */
/* Show new object */
if (SP_IS_ITEM(ochild)) {
v->key,
if (ac) {
}
}
}
}
static void
{
if (flags & SP_OBJECT_MODIFIED_FLAG) {
}
for (SPObject *child = sp_object_first_child(SP_OBJECT(og)); child != NULL; child = SP_OBJECT_NEXT(child)) {
l = g_slist_prepend(l, child);
}
l = g_slist_reverse(l);
while (l) {
l = g_slist_remove(l, child);
}
}
} else {
}
}
}
static void
{
if (flags & SP_OBJECT_MODIFIED_FLAG) {
}
for (SPObject *child = sp_object_first_child(SP_OBJECT(og)); child != NULL; child = SP_OBJECT_NEXT(child)) {
l = g_slist_prepend(l, child);
}
l = g_slist_reverse(l);
while (l) {
l = g_slist_remove(l, child);
}
}
}
sp_clippath_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
{
}
return repr;
}
{
for (SPObject *child = sp_object_first_child(SP_OBJECT(cp)) ; child != NULL; child = SP_OBJECT_NEXT(child)) {
if (SP_IS_ITEM(child)) {
if (ac) {
/* The order is not important in clippath */
}
}
}
Geom::Matrix t(Geom::Scale(cp->display->bbox.x1 - cp->display->bbox.x0, cp->display->bbox.y1 - cp->display->bbox.y0));
}
return ai;
}
void
{
for (SPObject *child = sp_object_first_child(SP_OBJECT(cp)) ; child != NULL; child = SP_OBJECT_NEXT(child)) {
if (SP_IS_ITEM(child)) {
}
}
/* We simply unref and let item to manage this in handler */
return;
}
}
}
void
{
}
break;
}
}
}
void
sp_clippath_get_bbox(SPClipPath *cp, NRRect *bbox, Geom::Matrix const &transform, unsigned const /*flags*/)
{
SPObject *i;
if (!i) return;
SP_ITEM(i)->invoke_bbox_full( bbox, Geom::Matrix(SP_ITEM(i)->transform) * transform, SPItem::GEOMETRIC_BBOX, FALSE);
while (i != NULL) {
if (i != i_start) {
SP_ITEM(i)->invoke_bbox_full( &i_box, Geom::Matrix(SP_ITEM(i)->transform) * transform, SPItem::GEOMETRIC_BBOX, FALSE);
}
i = SP_OBJECT_NEXT(i);
for (; i && !SP_IS_ITEM(i); i = SP_OBJECT_NEXT(i)){};
}
}
/* ClipPath views */
{
return new_path_view;
}
{
} else {
}
return list;
}
// Create a mask element (using passed elements), add it to <defs>
const gchar *
{
if (NULL != applyTransform) {
transform *= (*applyTransform);
}
}
return id;
}
/*
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:encoding=utf-8:textwidth=99 :