/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org 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 Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/

#ifndef _SVX_UNOSHPRP_HXX
#define _SVX_UNOSHPRP_HXX

#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/drawing/PointSequence.hpp>
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/drawing/RectanglePoint.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/drawing/Hatch.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineDash.hpp>
#include <com/sun/star/drawing/LineJoint.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/drawing/TextAnimationDirection.hpp>
#include <com/sun/star/drawing/TextAnimationKind.hpp>
#include <com/sun/star/drawing/TextFitToSizeType.hpp>
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
#include <com/sun/star/drawing/ConnectorType.hpp>
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/drawing/MeasureKind.hpp>
#include <com/sun/star/drawing/MeasureTextHorzPos.hpp>
#include <com/sun/star/drawing/MeasureTextVertPos.hpp>
#include <com/sun/star/drawing/HomogenMatrix3.hpp>
#include <com/sun/star/drawing/CircleKind.hpp>
#include <com/sun/star/drawing/PolygonKind.hpp>
#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
#include <com/sun/star/drawing/ColorMode.hpp>
#include <com/sun/star/drawing/HomogenMatrix.hpp>
#include <com/sun/star/drawing/Direction3D.hpp>
#include <com/sun/star/drawing/ProjectionMode.hpp>
#include <com/sun/star/drawing/ShadeMode.hpp>
#include <com/sun/star/drawing/Position3D.hpp>
#include <com/sun/star/drawing/NormalsKind.hpp>
#include <com/sun/star/drawing/TextureKind.hpp>
#include <com/sun/star/drawing/TextureMode.hpp>
#include <com/sun/star/drawing/TextureProjectionMode.hpp>
#include <com/sun/star/drawing/PolyPolygonShape3D.hpp>
#include <com/sun/star/text/GraphicCrop.hpp>
#include <com/sun/star/drawing/BitmapMode.hpp>
#include <com/sun/star/drawing/CameraGeometry.hpp>
#include <com/sun/star/text/WritingMode.hpp>

#define _SVX_USE_UNOGLOBALS_
#include <bf_svx/unoprov.hxx>
#include <bf_svx/unoprnms.hxx>
#include <bf_svx/unomid.hxx>

#include <bf_svx/unotext.hxx>

#include <bf_svtools/itemprop.hxx>

#include <bf_svx/svxids.hrc>
namespace binfilter {

#ifndef SEQTYPE
 #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)
  #define SEQTYPE(x) (new ::com::sun::star::uno::Type( x ))
 #else
  #define SEQTYPE(x) &(x)
 #endif
#endif

#define OWN_ATTR_VALUE_START                    (3900)
#define OWN_ATTR_VALUE_START_TEXT               (OWN_ATTR_VALUE_START+0)    // the next 10 entries are reserved for text
#define OWN_ATTR_VALUE_POLYGONKIND              (OWN_ATTR_VALUE_START+10)
#define OWN_ATTR_VALUE_POLYPOLYGON              (OWN_ATTR_VALUE_START+11)
#define OWN_ATTR_VALUE_POLYPOLYGONBEZIER        (OWN_ATTR_VALUE_START+12)
#define OWN_ATTR_VALUE_FILLBITMAP               (OWN_ATTR_VALUE_START+13)
#define OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX      (OWN_ATTR_VALUE_START+14)
#define OWN_ATTR_3D_VALUE_POSITION              (OWN_ATTR_VALUE_START+15)
#define OWN_ATTR_3D_VALUE_SIZE                  (OWN_ATTR_VALUE_START+16)
#define OWN_ATTR_3D_VALUE_POS_IS_CENTER         (OWN_ATTR_VALUE_START+17)
#define OWN_ATTR_3D_VALUE_POLYPOLYGON3D         (OWN_ATTR_VALUE_START+18)
#define OWN_ATTR_3D_VALUE_LINEONLY              (OWN_ATTR_VALUE_START+19)
#define OWN_ATTR_BITMAP                         (OWN_ATTR_VALUE_START+20)
#define OWN_ATTR_EDGE_START_OBJ                 (OWN_ATTR_VALUE_START+21)
#define OWN_ATTR_EDGE_START_POS                 (OWN_ATTR_VALUE_START+22)
#define OWN_ATTR_EDGE_END_OBJ                   (OWN_ATTR_VALUE_START+23)
#define OWN_ATTR_EDGE_END_POS                   (OWN_ATTR_VALUE_START+24)
#define OWN_ATTR_FRAMERECT                      (OWN_ATTR_VALUE_START+25)
#define OWN_ATTR_VALUE_POLYGON                  (OWN_ATTR_VALUE_START+26)
#define OWN_ATTR_METAFILE                       (OWN_ATTR_VALUE_START+27)
#define OWN_ATTR_ISFONTWORK                     (OWN_ATTR_VALUE_START+28)
#define OWN_ATTR_BOUNDRECT                      (OWN_ATTR_VALUE_START+29)
#define OWN_ATTR_LDNAME                         (OWN_ATTR_VALUE_START+30)
#define OWN_ATTR_LDBITMAP                       (OWN_ATTR_VALUE_START+31)
#define OWN_ATTR_OLESIZE                        (OWN_ATTR_VALUE_START+32)
#define OWN_ATTR_GRAFURL                        (OWN_ATTR_VALUE_START+33)
#define OWN_ATTR_OLEMODEL                       (OWN_ATTR_VALUE_START+34)
#define OWN_ATTR_MIRRORED                       (OWN_ATTR_VALUE_START+35)
#define OWN_ATTR_CLSID                          (OWN_ATTR_VALUE_START+36)
#define OWN_ATTR_GLUEID_TAIL                    (OWN_ATTR_VALUE_START+37)
#define OWN_ATTR_GLUEID_HEAD                    (OWN_ATTR_VALUE_START+38)
#define OWN_ATTR_ZORDER                         (OWN_ATTR_VALUE_START+39)
#define OWN_ATTR_MEASURE_START_POS              (OWN_ATTR_VALUE_START+40)
#define OWN_ATTR_MEASURE_END_POS                (OWN_ATTR_VALUE_START+41)
#define OWN_ATTR_3D_VALUE_CAMERA_GEOMETRY       (OWN_ATTR_VALUE_START+42)
#define OWN_ATTR_WRITINGMODE                    (OWN_ATTR_VALUE_START+43)
#define OWN_ATTR_GRAFSTREAMURL                  (OWN_ATTR_VALUE_START+44)
#define OWN_ATTR_FILLBMP_MODE                   (OWN_ATTR_VALUE_START+45)
#define OWN_ATTR_TRANSFORMATION                 (OWN_ATTR_VALUE_START+46)
#define OWN_ATTR_BASE_GEOMETRY                  (OWN_ATTR_VALUE_START+47)
#define OWN_ATTR_INTERNAL_OLE                   (OWN_ATTR_VALUE_START+48)
#define OWN_ATTR_APPLET_CODEBASE                (OWN_ATTR_VALUE_START+49)
#define OWN_ATTR_APPLET_NAME                    (OWN_ATTR_VALUE_START+50)
#define OWN_ATTR_APPLET_CODE                    (OWN_ATTR_VALUE_START+51)
#define OWN_ATTR_APPLET_COMMANDS                (OWN_ATTR_VALUE_START+52)
#define OWN_ATTR_APPLET_ISSCRIPT                (OWN_ATTR_VALUE_START+53)
#define OWN_ATTR_PLUGIN_MIMETYPE                (OWN_ATTR_VALUE_START+54)
#define OWN_ATTR_PLUGIN_URL                     (OWN_ATTR_VALUE_START+55)
#define OWN_ATTR_PLUGIN_COMMANDS                (OWN_ATTR_VALUE_START+56)
#define OWN_ATTR_FRAME_URL                      (OWN_ATTR_VALUE_START+57)
#define OWN_ATTR_FRAME_NAME                     (OWN_ATTR_VALUE_START+58)
#define OWN_ATTR_FRAME_ISAUTOSCROLL             (OWN_ATTR_VALUE_START+59)
#define OWN_ATTR_FRAME_ISBORDER                 (OWN_ATTR_VALUE_START+60)
#define OWN_ATTR_FRAME_MARGIN_WIDTH             (OWN_ATTR_VALUE_START+61)
#define OWN_ATTR_FRAME_MARGIN_HEIGHT            (OWN_ATTR_VALUE_START+62)
#define OWN_ATTR_OLE_VISAREA                    (OWN_ATTR_VALUE_START+63)
#define OWN_ATTR_CAPTION_POINT                  (OWN_ATTR_VALUE_START+64)
#define OWN_ATTR_PAGE_NUMBER                    (OWN_ATTR_VALUE_START+65)
#define OWN_ATTR_THUMBNAIL                      (OWN_ATTR_VALUE_START+66)
#define OWN_ATTR_PERSISTNAME                    (OWN_ATTR_VALUE_START+67)
#define OWN_ATTR_HASLEVELS                      (OWN_ATTR_VALUE_START+68)

#define OWN_ATTR_VALUE_END                      OWN_ATTR_HASLEVELS // WARNING: ee items start at 3991!

// #FontWork#
#define FONTWORK_PROPERTIES \
    { MAP_CHAR_LEN("FontWorkStyle"),            XATTR_FORMTXTSTYLE,         /*ENUM*/&::getCppuType((const sal_Int32*)0),    0,  0}, \
    { MAP_CHAR_LEN("FontWorkAdjust"),           XATTR_FORMTXTADJUST,        /*ENUM*/&::getCppuType((const sal_Int32*)0),    0,  0}, \
    { MAP_CHAR_LEN("FontWorkDistance"),         XATTR_FORMTXTDISTANCE,      &::getCppuType((const sal_Int32*)0),            0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN("FontWorkStart"),            XATTR_FORMTXTSTART,         &::getCppuType((const sal_Int32*)0),            0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN("FontWorkMirror"),           XATTR_FORMTXTMIRROR,        &::getBooleanCppuType(),                        0,  0}, \
    { MAP_CHAR_LEN("FontWorkOutline"),          XATTR_FORMTXTOUTLINE,       &::getBooleanCppuType(),                        0,  0}, \
    { MAP_CHAR_LEN("FontWorkShadow"),           XATTR_FORMTXTSHADOW,        /*ENUM*/&::getCppuType((const sal_Int32*)0),    0,  0}, \
    { MAP_CHAR_LEN("FontWorkShadowColor"),      XATTR_FORMTXTSHDWCOLOR,     &::getCppuType((const sal_Int32*)0),            0,  0}, \
    { MAP_CHAR_LEN("FontWorkShadowOffsetX"),    XATTR_FORMTXTSHDWXVAL,      &::getCppuType((const sal_Int32*)0),            0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN("FontWorkShadowOffsetY"),    XATTR_FORMTXTSHDWYVAL,      &::getCppuType((const sal_Int32*)0),            0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN("FontWorkForm"),             XATTR_FORMTXTSTDFORM,       /*ENUM*/&::getCppuType((const sal_Int32*)0),    0,  0}, \
    { MAP_CHAR_LEN("FontWorkHideForm"),         XATTR_FORMTXTHIDEFORM,      &::getBooleanCppuType(),                        0,  0}, \
    { MAP_CHAR_LEN("FontWorkShadowTransparence"),XATTR_FORMTXTSHDWTRANSP,   &::getCppuType((const sal_Int16*)0),            0,  0},

#define SHADOW_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_SHADOW),            SDRATTR_SHADOW,             &::getBooleanCppuType(),    0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_SHADOWCOLOR),       SDRATTR_SHADOWCOLOR,        &::getCppuType((const sal_Int32*)0),    0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_SHADOWTRANSPARENCE),SDRATTR_SHADOWTRANSPARENCE, &::getCppuType((const sal_Int16*)0),    0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_SHADOWXDIST),       SDRATTR_SHADOWXDIST,        &::getCppuType((const sal_Int32*)0),    0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_SHADOWYDIST),       SDRATTR_SHADOWYDIST,        &::getCppuType((const sal_Int32*)0),    0,      SFX_METRIC_ITEM},

#define LINE_PROPERTIES_DEFAULTS\
    { MAP_CHAR_LEN(UNO_NAME_LINECOLOR),         XATTR_LINECOLOR,        &::getCppuType((const sal_Int32*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINEENDCENTER),     XATTR_LINEENDCENTER,    &::getBooleanCppuType() ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINEENDWIDTH),      XATTR_LINEENDWIDTH,     &::getCppuType((const sal_Int32*)0) ,           0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_LINEJOINT),         XATTR_LINEJOINT,        &::getCppuType((const ::com::sun::star::drawing::LineJoint*)0),     0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINESTARTCENTER),   XATTR_LINESTARTCENTER,  &::getBooleanCppuType() ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINESTARTWIDTH),    XATTR_LINESTARTWIDTH,   &::getCppuType((const sal_Int32*)0) ,           0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_LINESTYLE),         XATTR_LINESTYLE,        &::getCppuType((const ::com::sun::star::drawing::LineStyle*)0) ,        0,     0},  \
    { MAP_CHAR_LEN(UNO_NAME_LINETRANSPARENCE),  XATTR_LINETRANSPARENCE, &::getCppuType((const sal_Int16*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINEWIDTH),         XATTR_LINEWIDTH,        &::getCppuType((const sal_Int32*)0) ,           0,     SFX_METRIC_ITEM},

#define LINE_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_LINEDASH),          XATTR_LINEDASH,         &::getCppuType((const ::com::sun::star::drawing::LineDash*)0) ,         0,     0},  \
    { MAP_CHAR_LEN("LineDashName"),             XATTR_LINEDASH,         &::getCppuType((const ::rtl::OUString*)0) ,         0,     MID_NAME},   \
    LINE_PROPERTIES_DEFAULTS

#define LINE_PROPERTIES_START_END \
    { MAP_CHAR_LEN(UNO_NAME_LINEEND),           XATTR_LINEEND,          SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0)),   ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,     0}, \
    { MAP_CHAR_LEN("LineEndName"),              XATTR_LINEEND,          &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
    { MAP_CHAR_LEN(UNO_NAME_LINESTART),         XATTR_LINESTART,        SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0)),   ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,     0},  \
    { MAP_CHAR_LEN("LineStartName"),            XATTR_LINESTART,            &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME },

#define FILL_PROPERTIES_BMP \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_LOGICAL_SIZE),      XATTR_FILLBMP_SIZELOG,      &::getBooleanCppuType() ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_OFFSET_X),          XATTR_FILLBMP_TILEOFFSETX,  &::getCppuType((const sal_Int32*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_OFFSET_Y),          XATTR_FILLBMP_TILEOFFSETY,  &::getCppuType((const sal_Int32*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_POSITION_OFFSET_X), XATTR_FILLBMP_POSOFFSETX,   &::getCppuType((const sal_Int32*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_POSITION_OFFSET_Y), XATTR_FILLBMP_POSOFFSETY,   &::getCppuType((const sal_Int32*)0) ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_RECTANGLE_POINT),   XATTR_FILLBMP_POS,          &::getCppuType((const ::com::sun::star::drawing::RectanglePoint*)0) , 0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_SIZE_X),            XATTR_FILLBMP_SIZEX,        &::getCppuType((const sal_Int32*)0) ,           0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_SIZE_Y),            XATTR_FILLBMP_SIZEY,        &::getCppuType((const sal_Int32*)0) ,           0,     SFX_METRIC_ITEM},    \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_STRETCH),           XATTR_FILLBMP_STRETCH,      &::getBooleanCppuType() ,           0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_TILE),              XATTR_FILLBMP_TILE,         &::getBooleanCppuType() ,           0,     0},\
    { MAP_CHAR_LEN(UNO_NAME_FILLBMP_MODE),              OWN_ATTR_FILLBMP_MODE,      &::getCppuType((const ::com::sun::star::drawing::BitmapMode*)0),            0,     0},

#define FILL_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_FILLCOLOR),         XATTR_FILLCOLOR         , &::getCppuType((const sal_Int32*)0),          0,     0}, \

#define FILL_PROPERTIES \
    FILL_PROPERTIES_BMP \
    FILL_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_FILLBACKGROUND),    XATTR_FILLBACKGROUND    , &::getBooleanCppuType(),              0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLBITMAP),        XATTR_FILLBITMAP        , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0)  ,       0,     0}, \
    { MAP_CHAR_LEN("FillBitmapName"),           XATTR_FILLBITMAP        , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
    { MAP_CHAR_LEN("FillBitmapURL"),            XATTR_FILLBITMAP        , &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAFURL }, \
    { MAP_CHAR_LEN("FillGradientStepCount"),    XATTR_GRADIENTSTEPCOUNT , &::getCppuType((const sal_Int16*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILLGRADIENT),      XATTR_FILLGRADIENT      , &::getCppuType((const ::com::sun::star::awt::Gradient*)0),        0,     0}, \
    { MAP_CHAR_LEN("FillGradientName"),         XATTR_FILLGRADIENT      , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
    { MAP_CHAR_LEN(UNO_NAME_FILLHATCH),         XATTR_FILLHATCH         , &::getCppuType((const ::com::sun::star::drawing::Hatch*)0),           0,     0}, \
    { MAP_CHAR_LEN("FillHatchName"),            XATTR_FILLHATCH         , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
    { MAP_CHAR_LEN(UNO_NAME_FILLSTYLE),         XATTR_FILLSTYLE         , &::getCppuType((const ::com::sun::star::drawing::FillStyle*)0) ,      0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_FILL_TRANSPARENCE), XATTR_FILLTRANSPARENCE, &::getCppuType((const sal_Int16*)0) ,           0,     0}, \
    { MAP_CHAR_LEN("FillTransparenceGradient"), XATTR_FILLFLOATTRANSPARENCE, &::getCppuType((const ::com::sun::star::awt::Gradient*)0),         0,     0}, \
    { MAP_CHAR_LEN("FillTransparenceGradientName"), XATTR_FILLFLOATTRANSPARENCE, &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME },

#define EDGERADIUS_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_EDGERADIUS),        SDRATTR_ECKENRADIUS     , &::getCppuType((const sal_Int32*)0)  ,            0,     SFX_METRIC_ITEM},

#define TEXT_PROPERTIES_DEFAULTS\
    { MAP_CHAR_LEN(UNO_NAME_TEXT_WRITINGMODE),      SDRATTR_TEXTDIRECTION,          &::getCppuType((const ::com::sun::star::text::WritingMode*)0),      0,      0},\
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIAMOUNT),        SDRATTR_TEXT_ANIAMOUNT,         &::getCppuType((const sal_Int16*)0),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANICOUNT),         SDRATTR_TEXT_ANICOUNT,          &::getCppuType((const sal_Int16*)0),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIDELAY),         SDRATTR_TEXT_ANIDELAY,          &::getCppuType((const sal_Int16*)0),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIDIRECTION),     SDRATTR_TEXT_ANIDIRECTION,      &::getCppuType((const ::com::sun::star::drawing::TextAnimationDirection*)0),    0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIKIND),          SDRATTR_TEXT_ANIKIND,           &::getCppuType((const ::com::sun::star::drawing::TextAnimationKind*)0), 0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANISTARTINSIDE),   SDRATTR_TEXT_ANISTARTINSIDE,    &::getBooleanCppuType(),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_ANISTOPINSIDE),    SDRATTR_TEXT_ANISTOPINSIDE,     &::getBooleanCppuType(),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_AUTOGROWHEIGHT),   SDRATTR_TEXT_AUTOGROWHEIGHT,    &::getBooleanCppuType(),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_AUTOGROWWIDTH),    SDRATTR_TEXT_AUTOGROWWIDTH,     &::getBooleanCppuType(),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_CONTOURFRAME),     SDRATTR_TEXT_CONTOURFRAME,      &::getBooleanCppuType(),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_FITTOSIZE),        SDRATTR_TEXT_FITTOSIZE,         &::getCppuType((const ::com::sun::star::drawing::TextFitToSizeType*)0), 0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_HORZADJUST),       SDRATTR_TEXT_HORZADJUST,        &::getCppuType((const ::com::sun::star::drawing::TextHorizontalAdjust*)0),  0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_LEFTDIST),         SDRATTR_TEXT_LEFTDIST,          &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_LOWERDIST),        SDRATTR_TEXT_LOWERDIST,         &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_MAXFRAMEHEIGHT),   SDRATTR_TEXT_MAXFRAMEHEIGHT,    &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_MAXFRAMEWIDTH),    SDRATTR_TEXT_MAXFRAMEWIDTH,     &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_MINFRAMEHEIGHT),   SDRATTR_TEXT_MINFRAMEHEIGHT,    &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_MINFRAMEWIDTH),    SDRATTR_TEXT_MINFRAMEWIDTH,     &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_RIGHTDIST),        SDRATTR_TEXT_RIGHTDIST,         &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_UPPERDIST),        SDRATTR_TEXT_UPPERDIST,         &::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_TEXT_VERTADJUST),       SDRATTR_TEXT_VERTADJUST,        &::getCppuType((const ::com::sun::star::drawing::TextVerticalAdjust*)0),    0,      0},\
    SVX_UNOEDIT_CHAR_PROPERTIES, \
    SVX_UNOEDIT_PARA_PROPERTIES,

#define TEXT_PROPERTIES \
    { MAP_CHAR_LEN("HasLevels"),                    OWN_ATTR_HASLEVELS,             &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY,      0},\
    SVX_UNOEDIT_NUMBERING_PROPERTIE, \
    TEXT_PROPERTIES_DEFAULTS

#define MISC_OBJ_PROPERTIES_NO_SHEAR \
    { MAP_CHAR_LEN("Transformation"),                   OWN_ATTR_TRANSFORMATION,    &::getCppuType((const struct ::com::sun::star::drawing::HomogenMatrix3*)0), 0, 0 }, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_ZORDER),           OWN_ATTR_ZORDER,            &::getCppuType((const sal_Int32*)0),        0,      0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_FRAMERECT),        OWN_ATTR_FRAMERECT,         &::getCppuType((const ::com::sun::star::awt::Rectangle*)0), 0,  0 }, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_ROTATEANGLE),      SDRATTR_ROTATEANGLE,        &::getCppuType((const sal_Int32*)0),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_BITMAP),                    OWN_ATTR_BITMAP,            &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0),   ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_OLE2_METAFILE),             OWN_ATTR_METAFILE,          SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
    { MAP_CHAR_LEN("IsFontwork"),                       OWN_ATTR_ISFONTWORK,        &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_BOUNDRECT),        OWN_ATTR_BOUNDRECT,         &::getCppuType((const ::com::sun::star::awt::Rectangle*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},

#define MISC_OBJ_PROPERTIES \
    MISC_OBJ_PROPERTIES_NO_SHEAR \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_SHEARANGLE),       SDRATTR_SHEARANGLE,         &::getCppuType((const sal_Int32*)0),        0,  0},

#define SHAPE_DESCRIPTOR_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_LAYERID),      SDRATTR_LAYERID                 , &::getCppuType((const sal_Int16*)0),          0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_LAYERNAME),    SDRATTR_LAYERNAME               , &::getCppuType((const ::rtl::OUString*)0),    0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_MOVEPROTECT),  SDRATTR_OBJMOVEPROTECT          , &::getBooleanCppuType(),                      0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_NAME),         SDRATTR_OBJECTNAME              , &::getCppuType((const ::rtl::OUString*)0),    0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_PRINTABLE),    SDRATTR_OBJPRINTABLE            , &::getBooleanCppuType(),                      0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_SIZEPROTECT),  SDRATTR_OBJSIZEPROTECT          , &::getBooleanCppuType(),                      0,  0},

#define LINKTARGET_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME),   OWN_ATTR_LDNAME             , &::getCppuType((const ::rtl::OUString*)0),    ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), OWN_ATTR_LDBITMAP               , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},

#define CONNECTOR_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_EDGEKIND),          SDRATTR_EDGEKIND,           &::getCppuType((const ::com::sun::star::drawing::ConnectorType*)0),     0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGENODE1HORZDIST), SDRATTR_EDGENODE1HORZDIST,  &::getCppuType((const sal_Int32*)0),       0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGENODE1VERTDIST), SDRATTR_EDGENODE1VERTDIST,  &::getCppuType((const sal_Int32*)0),       0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGENODE2HORZDIST), SDRATTR_EDGENODE2HORZDIST,  &::getCppuType((const sal_Int32*)0),       0,     0}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGENODE2VERTDIST), SDRATTR_EDGENODE2VERTDIST,  &::getCppuType((const sal_Int32*)0),       0,     0},

#define SPECIAL_CONNECTOR_PROPERTIES \
    CONNECTOR_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_EDGELINE1DELTA),    SDRATTR_EDGELINE1DELTA,     &::getCppuType((const sal_Int32*)0),       0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGELINE2DELTA),    SDRATTR_EDGELINE2DELTA,     &::getCppuType((const sal_Int32*)0),       0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_EDGELINE3DELTA),    SDRATTR_EDGELINE3DELTA,     &::getCppuType((const sal_Int32*)0),       0,     SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN("StartShape"),               OWN_ATTR_EDGE_START_OBJ,    &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >*)0),        ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,   0}, \
    { MAP_CHAR_LEN("StartGluePointIndex"),      OWN_ATTR_GLUEID_HEAD,       &::getCppuType((const sal_Int32*)0),       0,     0}, \
    { MAP_CHAR_LEN("StartPosition"),            OWN_ATTR_EDGE_START_POS,    &::getCppuType((const ::com::sun::star::awt::Point*)0),     0,   0}, \
    { MAP_CHAR_LEN("EndShape"),                 OWN_ATTR_EDGE_END_OBJ,      &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>*)0),     ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,   0}, \
    { MAP_CHAR_LEN("EndPosition"),              OWN_ATTR_EDGE_END_POS,      &::getCppuType((const ::com::sun::star::awt::Point*)0),     0,   0},\
    { MAP_CHAR_LEN("EndGluePointIndex"),        OWN_ATTR_GLUEID_TAIL,       &::getCppuType((const sal_Int32*)0),       0,     0}, \
\
    { MAP_CHAR_LEN("EdgeStartConnection"),      OWN_ATTR_EDGE_START_OBJ,    &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >*)0),        ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,   0}, \
    { MAP_CHAR_LEN("EdgeStartPoint"),           OWN_ATTR_EDGE_START_POS,    &::getCppuType((const ::com::sun::star::awt::Point*)0),     ::com::sun::star::beans::PropertyAttribute::READONLY,    0}, \
    { MAP_CHAR_LEN("EdgeEndConnection"),        OWN_ATTR_EDGE_END_OBJ,      &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>*)0),     ::com::sun::star::beans::PropertyAttribute::MAYBEVOID,   0}, \
    { MAP_CHAR_LEN("EdgeEndPoint"),             OWN_ATTR_EDGE_END_POS,      &::getCppuType((const ::com::sun::star::awt::Point*)0),     ::com::sun::star::beans::PropertyAttribute::READONLY,    0},

#define SPECIAL_DIMENSIONING_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREBELOWREFEDGE),       SDRATTR_MEASUREBELOWREFEDGE,        &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREFORMATSTRING),       SDRATTR_MEASUREFORMATSTRING,        &::getCppuType((const ::rtl::OUString*)0),      0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINE1LEN),       SDRATTR_MEASUREHELPLINE1LEN,        &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINE2LEN),       SDRATTR_MEASUREHELPLINE2LEN,        &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINEDIST),       SDRATTR_MEASUREHELPLINEDIST,        &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINEOVERHANG),   SDRATTR_MEASUREHELPLINEOVERHANG,    &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREKIND),               SDRATTR_MEASUREKIND,                &::getCppuType((const ::com::sun::star::drawing::MeasureKind*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURELINEDIST),           SDRATTR_MEASURELINEDIST,            &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREOVERHANG),           SDRATTR_MEASUREOVERHANG,            &::getCppuType((const sal_Int32*)0),        0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASUREUNIT),               SDRATTR_MEASUREUNIT,                &::getCppuType((const sal_Int32*)0),    0,  0},\
    { MAP_CHAR_LEN(UNO_NAME_MEASURESHOWUNIT),           SDRATTR_MEASURESHOWUNIT,            &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTAUTOANGLE),      SDRATTR_MEASURETEXTAUTOANGLE,       &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTAUTOANGLEVIEW),  SDRATTR_MEASURETEXTAUTOANGLEVIEW,   &::getCppuType((const sal_Int32*)0),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTFIXEDANGLE),     SDRATTR_MEASURETEXTFIXEDANGLE,      &::getCppuType((const sal_Int32*)0),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTHPOS),           SDRATTR_MEASURETEXTHPOS,            &::getCppuType((const ::com::sun::star::drawing::MeasureTextHorzPos*)0),    0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTISFIXEDANGLE),   SDRATTR_MEASURETEXTISFIXEDANGLE,    &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTROTA90),         SDRATTR_MEASURETEXTROTA90,          &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTUPSIDEDOWN),     SDRATTR_MEASURETEXTUPSIDEDOWN,      &::getBooleanCppuType(),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTVPOS),           SDRATTR_MEASURETEXTVPOS,            &::getCppuType((const ::com::sun::star::drawing::MeasureTextVertPos*)0),    0,  0}, \
    { MAP_CHAR_LEN("MeasureDecimalPlaces"),             SDRATTR_MEASUREDECIMALPLACES,       &::getCppuType((const sal_Int16*)0),        0,  0},

#define SPECIAL_DIMENSIONING_PROPERTIES \
    SPECIAL_DIMENSIONING_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN("StartPosition"),                    OWN_ATTR_MEASURE_START_POS,         &::getCppuType((const ::com::sun::star::awt::Point*)0),     0,   0},\
    { MAP_CHAR_LEN("EndPosition"),                      OWN_ATTR_MEASURE_END_POS,           &::getCppuType((const ::com::sun::star::awt::Point*)0),     0,   0},

#define SPECIAL_CIRCLE_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_CIRCENDANGLE),  SDRATTR_CIRCENDANGLE,   &::getCppuType((const sal_Int32*)0),        0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_CIRCKIND),      SDRATTR_CIRCKIND,       &::getCppuType((const ::com::sun::star::drawing::CircleKind*)0),    0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_CIRCSTARTANGLE),SDRATTR_CIRCSTARTANGLE, &::getCppuType((const sal_Int32*)0),        0,  0},

#define SPECIAL_POLYGON_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_POLYGONKIND),   OWN_ATTR_VALUE_POLYGONKIND, &::getCppuType((const ::com::sun::star::drawing::PolygonKind*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},

#define SPECIAL_POLYPOLYGON_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_POLYPOLYGON),   OWN_ATTR_VALUE_POLYPOLYGON, SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PointSequenceSequence*)0)), 0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_POLYGON),       OWN_ATTR_VALUE_POLYGON,     SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PointSequence*)0)),         0,  0},

#define SPECIAL_POLYPOLYGONBEZIER_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_POLYPOLYGONBEZIER), OWN_ATTR_VALUE_POLYPOLYGONBEZIER,   &::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0),       0,  0},

#define SPECIAL_GRAPHOBJ_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_LUMINANCE),     SDRATTR_GRAFLUMINANCE       , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_CONTRAST),      SDRATTR_GRAFCONTRAST        , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_RED),           SDRATTR_GRAFRED             , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GREEN),         SDRATTR_GRAFGREEN           , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_BLUE),          SDRATTR_GRAFBLUE            , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GAMMA),         SDRATTR_GRAFGAMMA           , &::getCppuType((const double*)0),     0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_TRANSPARENCY),  SDRATTR_GRAFTRANSPARENCE    , &::getCppuType((const sal_Int16*)0),          0,   0}, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_COLOR_MODE),    SDRATTR_GRAFMODE            , &::getCppuType((const ::com::sun::star::drawing::ColorMode*)0),       0,   0},

#define SPECIAL_GRAPHOBJ_PROPERTIES \
    SPECIAL_GRAPHOBJ_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GRAPHICCROP),   SDRATTR_GRAFCROP            , &::getCppuType((const ::com::sun::star::text::GraphicCrop*)0),        0,  0 }, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_GRAFURL),      OWN_ATTR_GRAFURL            , &::getCppuType((const ::rtl::OUString*)0), 0, 0 }, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_GRAFSTREAMURL),OWN_ATTR_GRAFSTREAMURL      , &::getCppuType((const ::rtl::OUString*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 }, \
    { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_FILLBITMAP),   OWN_ATTR_VALUE_FILLBITMAP   , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap>*)0)  ,    0,     0},

#define SPECIAL_3DSCENEOBJECT_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_AMBIENTCOLOR),     SDRATTR_3DSCENE_AMBIENTCOLOR   , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_DISTANCE),         SDRATTR_3DSCENE_DISTANCE       , &::getCppuType((const sal_Int32*)0),   0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_FOCAL_LENGTH),     SDRATTR_3DSCENE_FOCAL_LENGTH   , &::getCppuType((const sal_Int32*)0),   0,  SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_1),     SDRATTR_3DSCENE_LIGHTCOLOR_1       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_2),     SDRATTR_3DSCENE_LIGHTCOLOR_2       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_3),     SDRATTR_3DSCENE_LIGHTCOLOR_3       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_4),     SDRATTR_3DSCENE_LIGHTCOLOR_4       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_5),     SDRATTR_3DSCENE_LIGHTCOLOR_5       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_6),     SDRATTR_3DSCENE_LIGHTCOLOR_6       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_7),     SDRATTR_3DSCENE_LIGHTCOLOR_7       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_8),     SDRATTR_3DSCENE_LIGHTCOLOR_8       , &::getCppuType((const sal_Int32*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_1), SDRATTR_3DSCENE_LIGHTDIRECTION_1   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_2), SDRATTR_3DSCENE_LIGHTDIRECTION_2   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_3), SDRATTR_3DSCENE_LIGHTDIRECTION_3   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_4), SDRATTR_3DSCENE_LIGHTDIRECTION_4   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_5), SDRATTR_3DSCENE_LIGHTDIRECTION_5   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_6), SDRATTR_3DSCENE_LIGHTDIRECTION_6   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_7), SDRATTR_3DSCENE_LIGHTDIRECTION_7   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_8), SDRATTR_3DSCENE_LIGHTDIRECTION_8   , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0),  0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_1),        SDRATTR_3DSCENE_LIGHTON_1          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_2),        SDRATTR_3DSCENE_LIGHTON_2          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_3),        SDRATTR_3DSCENE_LIGHTON_3          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_4),        SDRATTR_3DSCENE_LIGHTON_4          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_5),        SDRATTR_3DSCENE_LIGHTON_5          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_6),        SDRATTR_3DSCENE_LIGHTON_6          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_7),        SDRATTR_3DSCENE_LIGHTON_7          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_8),        SDRATTR_3DSCENE_LIGHTON_8          , &::getBooleanCppuType(),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_PERSPECTIVE),      SDRATTR_3DSCENE_PERSPECTIVE    , &::getCppuType((const ::com::sun::star::drawing::ProjectionMode*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_SHADOW_SLANT),     SDRATTR_3DSCENE_SHADOW_SLANT   , &::getCppuType((const sal_Int16*)0),   0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_SHADE_MODE),       SDRATTR_3DSCENE_SHADE_MODE     , &::getCppuType((const ::com::sun::star::drawing::ShadeMode*)0),    0,  0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_TWO_SIDED_LIGHTING),SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, &::getBooleanCppuType(),   0,  0},

#define SPECIAL_3DSCENEOBJECT_PROPERTIES \
    SPECIAL_3DSCENEOBJECT_PROPERTIES_DEFAULTS \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX),       OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX  , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_CAMERA_GEOMETRY),        OWN_ATTR_3D_VALUE_CAMERA_GEOMETRY   , &::getCppuType((const ::com::sun::star::drawing::CameraGeometry*)0), 0, 0},

#define MISC_3D_OBJ_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_DOUBLE_SIDED             ),SDRATTR_3DOBJ_DOUBLE_SIDED            , &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_MAT_COLOR                ),SDRATTR_3DOBJ_MAT_COLOR               , &::getCppuType((const sal_Int32*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_MAT_EMISSION             ),SDRATTR_3DOBJ_MAT_EMISSION            , &::getCppuType((const sal_Int32*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_MAT_SPECULAR             ),SDRATTR_3DOBJ_MAT_SPECULAR            , &::getCppuType((const sal_Int32*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_MAT_SPECULAR_INTENSITY   ),SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY  , &::getCppuType((const sal_Int16*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_NORMALS_INVERT           ),SDRATTR_3DOBJ_NORMALS_INVERT          , &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_NORMALS_KIND             ),SDRATTR_3DOBJ_NORMALS_KIND            , &::getCppuType((const ::com::sun::star::drawing::NormalsKind*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SHADOW_3D                ),SDRATTR_3DOBJ_SHADOW_3D               , &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_FILTER           ),SDRATTR_3DOBJ_TEXTURE_FILTER          , &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_KIND             ),SDRATTR_3DOBJ_TEXTURE_KIND            , &::getCppuType((const ::com::sun::star::drawing::TextureKind*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_MODE             ),SDRATTR_3DOBJ_TEXTURE_MODE            , &::getCppuType((const ::com::sun::star::drawing::TextureMode*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_PROJ_X           ),SDRATTR_3DOBJ_TEXTURE_PROJ_X          , &::getCppuType((const ::com::sun::star::drawing::TextureProjectionMode*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_PROJ_Y           ),SDRATTR_3DOBJ_TEXTURE_PROJ_Y          , &::getCppuType((const ::com::sun::star::drawing::TextureProjectionMode*)0), 0, 0},

#define SPECIAL_3DCUBEOBJECT_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX    , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POS              ),OWN_ATTR_3D_VALUE_POSITION            , &::getCppuType((const ::com::sun::star::drawing::Position3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SIZE             ),OWN_ATTR_3D_VALUE_SIZE                , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POS_IS_CENTER    ),OWN_ATTR_3D_VALUE_POS_IS_CENTER   , &::getBooleanCppuType(), 0, 0},

#define SPECIAL_3DSPHEREOBJECT_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX    , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POS              ),OWN_ATTR_3D_VALUE_POSITION            , &::getCppuType((const ::com::sun::star::drawing::Position3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SIZE             ),OWN_ATTR_3D_VALUE_SIZE                , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_HORZ_SEGS        ),SDRATTR_3DOBJ_HORZ_SEGS, &::getCppuType((const sal_Int32*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_VERT_SEGS        ),SDRATTR_3DOBJ_VERT_SEGS, &::getCppuType((const sal_Int32*)0), 0, 0},

// #107245# New 3D properties which are possible for lathe and extrude 3d objects
#define SPECIAL_3DLATHEANDEXTRUDEOBJ_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_SMOOTH_NORMALS   ), SDRATTR_3DOBJ_SMOOTH_NORMALS,    &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_SMOOTH_LIDS      ), SDRATTR_3DOBJ_SMOOTH_LIDS,       &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_CHARACTER_MODE   ), SDRATTR_3DOBJ_CHARACTER_MODE,    &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_CLOSE_FRONT      ), SDRATTR_3DOBJ_CLOSE_FRONT,       &::getBooleanCppuType(), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_CLOSE_BACK       ), SDRATTR_3DOBJ_CLOSE_BACK,        &::getBooleanCppuType(), 0, 0},

#define SPECIAL_3DLATHEOBJECT_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX    ,&::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D    ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D   ,&::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_LATHE_END_ANGLE  ),SDRATTR_3DOBJ_END_ANGLE           ,&::getCppuType((const sal_Int16*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_HORZ_SEGS        ),SDRATTR_3DOBJ_HORZ_SEGS           ,&::getCppuType((const sal_Int32*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_PERCENT_DIAGONAL ),SDRATTR_3DOBJ_PERCENT_DIAGONAL    ,&::getCppuType((const sal_Int16*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_VERT_SEGS        ),SDRATTR_3DOBJ_VERT_SEGS           ,&::getCppuType((const sal_Int32*)0), 0, 0},

#define SPECIAL_3DEXTRUDEOBJECT_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX    ,&::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D    ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D   ,&::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_EXTRUDE_DEPTH    ),SDRATTR_3DOBJ_DEPTH               ,&::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_PERCENT_DIAGONAL ),SDRATTR_3DOBJ_PERCENT_DIAGONAL    ,&::getCppuType((const sal_Int16*)0), 0, 0},

#define SPECIAL_3DPOLYGONOBJECT_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX    , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D    ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D   , &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_NORMALSPOLYGON3D ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D   , &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_TEXTUREPOLYGON3D ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D   , &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
    { MAP_CHAR_LEN(UNO_NAME_3D_LINEONLY         ),OWN_ATTR_3D_VALUE_LINEONLY        , &::getBooleanCppuType(), 0, 0},

#define SPECIAL_3DBACKSCALE_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_3D_BACKSCALE        ),SDRATTR_3DOBJ_BACKSCALE           ,&::getCppuType((const sal_Int16*)0), 0, 0}, \

#define AUTOSHAPE_PROPERTIES \
    { MAP_CHAR_LEN(UNO_NAME_AUTOSHAPE_ADJUSTMENT),SDRATTR_AUTOSHAPE_ADJUSTMENT,         SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int32>*)0)), 0, 0}, \

}//end of namespace binfilter
#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
