xref: /AOO41X/main/svtools/inc/svtools/imapobj.hxx (revision 01aa44aa134af97080e2cf8e8bf3a0a4cd1cffe0)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _GOODIES_IMAPOBJ_HXX
25 #define _GOODIES_IMAPOBJ_HXX
26 
27 #include "svtools/svtdllapi.h"
28 #include <tools/string.hxx>
29 #include <svl/macitem.hxx>
30 
31 class Point;
32 class Rectangle;
33 class SvStream;
34 
35 #define IMAP_OBJ_NONE       ((sal_uInt16)0x0000)
36 #define IMAP_OBJ_RECTANGLE  ((sal_uInt16)0x0001)
37 #define IMAP_OBJ_CIRCLE     ((sal_uInt16)0x0002)
38 #define IMAP_OBJ_POLYGON    ((sal_uInt16)0x0003)
39 #define IMAP_OBJ_VERSION    ((sal_uInt16)0x0005)
40 
41 #define IMAGE_MAP_VERSION   ((sal_uInt16)0x0001)
42 
43 #define IMAPMAGIC           "SDIMAP"
44 
45 #define IMAP_MIRROR_HORZ    0x00000001L
46 #define IMAP_MIRROR_VERT    0x00000002L
47 
48 #define IMAP_FORMAT_BIN     0x00000001L
49 #define IMAP_FORMAT_CERN    0x00000002L
50 #define IMAP_FORMAT_NCSA    0x00000004L
51 #define IMAP_FORMAT_DETECT  0xffffffffL
52 
53 #define IMAP_ERR_OK         0x00000000L
54 #define IMAP_ERR_FORMAT     0x00000001L
55 
56 /******************************************************************************
57 |*
58 |*
59 |*
60 \******************************************************************************/
61 
62 class SVT_DLLPUBLIC IMapObject
63 {
64     friend class        ImageMap;
65 
66     String              aURL;
67     String              aAltText;
68     String              aDesc;
69     String              aTarget;
70     String              aName;
71     SvxMacroTableDtor   aEventList;
72     sal_Bool                bActive;
73 
74 protected:
75 
76     sal_uInt16              nReadVersion;
77 
78     // Binaer-Im-/Export
79     virtual void        WriteIMapObject( SvStream& rOStm ) const = 0;
80     virtual void        ReadIMapObject(  SvStream& rIStm ) = 0;
81 
82     // Hilfsmethoden
83     void                AppendCERNCoords( const Point& rPoint100, ByteString& rStr ) const;
84     void                AppendCERNURL( ByteString& rStr, const String& rBaseURL ) const;
85     void                AppendNCSACoords( const Point& rPoint100, ByteString& rStr ) const;
86     void                AppendNCSAURL( ByteString& rStr, const String& rBaseURL ) const;
87 
88 public:
89 
90     static rtl_TextEncoding nActualTextEncoding;
91 
92                         IMapObject();
93                         IMapObject( const String& rURL,
94                                     const String& rAltText,
95                                     const String& rDesc,
96                                     const String& rTarget,
97                                     const String& rName,
98                                     sal_Bool bActive );
~IMapObject()99     virtual             ~IMapObject() {};
100 
101     virtual sal_uInt16      GetVersion() const;
102     virtual sal_uInt16      GetType() const = 0;
103     virtual sal_Bool        IsHit( const Point& rPoint ) const = 0;
104 
105     void                Write ( SvStream& rOStm, const String& rBaseURL ) const;
106     void                Read( SvStream& rIStm, const String& rBaseURL );
107 
108     virtual Rectangle   GetBoundRect() const = 0;
109 
GetURL() const110     const String&       GetURL() const { return aURL; }
SetURL(const String & rURL)111     void                SetURL( const String& rURL ) { aURL = rURL; }
112 
GetAltText() const113     const String&       GetAltText() const { return aAltText; }
SetAltText(const String & rAltText)114     void                SetAltText( const String& rAltText) { aAltText = rAltText; }
115 
GetDesc() const116     const String&       GetDesc() const { return aDesc; }
SetDesc(const String & rDesc)117     void                SetDesc( const String& rDesc ) { aDesc = rDesc; }
118 
GetTarget() const119     const String&       GetTarget() const { return aTarget; }
SetTarget(const String & rTarget)120     void                SetTarget( const String& rTarget ) { aTarget = rTarget; }
121 
GetName() const122     const String&       GetName() const { return aName; }
SetName(const String & rName)123     void                SetName( const String& rName ) { aName = rName; }
124 
IsActive() const125     sal_Bool                IsActive() const { return bActive; }
SetActive(sal_Bool bSetActive=sal_True)126     void                SetActive( sal_Bool bSetActive = sal_True ) { bActive = bSetActive; }
127 
128     static Point        GetPixelPoint( const Point& rLogPoint );
129     static Point        GetLogPoint( const Point& rPixelPoint );
130 
131     sal_Bool                IsEqual( const IMapObject& rEqObj );
132 
133     // IMap-Events
GetMacroTable() const134     inline const SvxMacroTableDtor& GetMacroTable() const { return aEventList;}
SetMacroTable(const SvxMacroTableDtor & rTbl)135     inline void SetMacroTable( const SvxMacroTableDtor& rTbl ) { aEventList = rTbl; }
136 
137     inline const SvxMacro&  GetEvent( sal_uInt16 nEvent ) const;
138     inline sal_Bool             HasEvent( sal_uInt16 nEvent ) const;
139            void             SetEvent( sal_uInt16 nEvent, const SvxMacro& );
140     inline sal_Bool             DelEvent( sal_uInt16 nEvent );
141 };
142 
HasEvent(sal_uInt16 nEvent) const143 inline sal_Bool IMapObject::HasEvent( sal_uInt16 nEvent ) const
144 {
145     return aEventList.IsKeyValid( nEvent );
146 }
GetEvent(sal_uInt16 nEvent) const147 inline const SvxMacro& IMapObject::GetEvent( sal_uInt16 nEvent ) const
148 {
149     return *(aEventList.Get( nEvent ));
150 }
DelEvent(sal_uInt16 nEvent)151 inline sal_Bool IMapObject::DelEvent( sal_uInt16 nEvent )
152 {
153     SvxMacro *pMacro = aEventList.Remove( nEvent );
154     delete pMacro;
155     return ( pMacro != 0 );
156 }
157 
158 #endif
159 
160